Jak mogę skopiować strukturę katalogów, dir1, do dir2 (wraz ze wszystkimi podkatalogami) na Uniksie za pomocą okna terminala?
Jak mogę skopiować strukturę katalogów, dir1, do dir2 (wraz ze wszystkimi podkatalogami) na Uniksie za pomocą okna terminala?
Odpowiedzi:
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 -f
flagi, 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.
f
flagi. -f if an existing destination file cannot be opened, remove it and try again
-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ź)
Chociaż cp -R
odpowiedzi 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.
lubię
cp -axv source dest
Rsync jest kolejnym dobrym narzędziem do tego
rsync -va source dest