Skopiuj katalog do Uniksa

78

Jak mogę skopiować strukturę katalogów, dir1, do dir2 (wraz ze wszystkimi podkatalogami) na Uniksie za pomocą okna terminala?

Dinesh Kumar
źródło
2
„cp -r / dir1 / dir2” Czy to prawda?
Dinesh Kumar,
Tak to jest poprawne. Możesz zaznaczyć jedną z odpowiedzi jako swoje rozwiązanie.
qroberts,

Odpowiedzi:

115
cp -rf /source/path/ /destination/path/

-r = rekurencyjny, kopiuje wszystkie podkatalogi

-f = wymuś, jeśli istniejącego pliku docelowego nie można otworzyć, usuń go i spróbuj ponownie

Uwaga Należy zachować ostrożność przy korzystaniu z -fflagi, ponieważ spowoduje ona wymuszenie zastąpienia wszystkiego, co skopiujesz. Dziękuję @Nifle za tę sugestię.

W razie potrzeby możesz użyć symbolu wieloznacznego *, aby skopiować wszystkie pliki z katalogu.

qroberts
źródło
11
Nie zgadzam się, że powinieneś użyć fflagi. -f if an existing destination file cannot be opened, remove it and try again
Nifle
Osobiście zawsze używam flagi -f. To nie jest dobra praktyka, więc może masz rację.
qroberts,
Jeśli wiesz, co robi i wiesz, co robisz, to jest OK. Ale w tym przypadku z niedoświadczonym użytkownikiem może nie być odpowiednie.
Nifle
@Nifle Tak, rozumiem co mówisz. Tyle, że jeśli go zmusi, szanse na jego działanie są większe niż gdyby tego nie zrobił. Wszystko zależy od tego, co robisz i od tego, co rozumiesz.
qroberts,
Jeśli w odpowiedzi umieścisz notatkę o tym, -fże flaga jest przydatna, jeśli kopiujesz <źródło> nad <test> (jak w przypadku nadpisywania rzeczy w <test>), głosuję za tym i usunę odpowiedź)
Nifle
11

Chociaż cp -Rodpowiedzi są prawidłowe (BTW w przypadku flagi na BSD musi być duża, obie są obsługiwane w systemie Linux), istnieje stara inkantacja dotycząca tar :

$ tar cf - . | (cd DIR; tar xf - )

Dlaczego do cholery miałbyś to zrobić? Ponieważ tar ma dość wyrafinowane rozumienie łączy zarówno twardych, jak i symbolicznych.

Czy chcesz, aby kopia zastąpiła istniejące łącza symboliczne tym, które mają ten sam tekst? Lub z linkami do tego samego celu (dostosowanie ścieżek względnych w celu kompensacji)? Lub z bitowymi kopiami celu?

Jeśli dwa pliki w oryginale są na stałe połączone, czy nowa struktura powinna zawierać dwie kopie danych, czy tylko jedną?

Decyzje, decyzje. Tar ma sensowne wartości domyślne, ale pozwala ci być bardzo konkretnym.

dmckee
źródło
9

lubię

cp -axv source dest

Rsync jest kolejnym dobrym narzędziem do tego

rsync -va source dest
Pete Ashdown
źródło