2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

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?

Odpowiedzi (3)

117
117
117
2010-12-15 15:49:02 +0000
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.

11
11
11
2010-12-15 16:07:16 +0000

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.

9
9
9
2010-12-15 19:54:18 +0000

Lubię

cp -axv source dest

Rsync jest kolejnym dobrym narzędziem do tego

rsync -va source dest
```.