Kopiowanie katalogu w systemie Unix
Jak mogę skopiować strukturę katalogów, dir1, do dir2, (ze wszystkimi podkatalogami) w systemie Unix, używając okna terminala?
Jak mogę skopiować strukturę katalogów, dir1, do dir2, (ze wszystkimi podkatalogami) w systemie Unix, używając okna terminala?
cp -rf /source/path/ /destination/path/
-r
= rekursywnie, kopiuje wszystkie podkatalogi
-f
= wymuszenie, jeśli istniejący plik docelowy nie może być otwarty, usuń go i spróbuj ponownie
Uwaga Powinieneś być ostrożny używając flagi -f
, ponieważ spowoduje ona wymuszone nadpisanie wszystkiego, do czego kopiujesz. Dziękuję @Nifle za tę sugestię.
Możesz użyć symbolu wieloznacznego, aby skopiować wszystkie pliki w katalogu, jeśli musisz.
Podczas gdy odpowiedzi cp -R
są poprawne (BTW przypadek flagi na BSD musi być kapitalny, oba są obsługiwane na linuxie), jest stare zaklęcie z udziałem tar :
$ tar cf - . | (cd DIR; tar xf - )
Dlaczego do diabła miałbyś to robić? Ponieważ tar ma dość zaawansowane rozumienie linków zarówno twardych, jak i symbolicznych.
Czy chcesz, aby kopia zastąpiła istniejące dowiązania symboliczne takimi, które mają ten sam tekst? Albo linkami do tego samego celu (dostosowując względne ścieżki, aby to skompensować)? Czy też z bitowymi kopiami celu?
Jeśli dwa pliki w oryginale są twardo połączone, czy nowa struktura powinna mieć dwie kopie danych, czy tylko jedną?
Decyzje, decyzje. Tar ma sensowne wartości domyślne, ale pozwala ci być bardzo szczegółowym.
Lubię
cp -axv source dest
Rsync jest kolejnym dobrym narzędziem do tego
rsync -va source dest
```.