Jak mogę użyć cp do skopiowania katalogu, ale zignoruj ​​pewien podkatalog w Linuksie

9

Z powodu problemu z dyskiem twardym próbuję przenieść partycję z jednego dysku twardego na inny. Śledzę http://www.ibm.com/developerworks/library/l-partplan.html artykuł, aby to zrobić. W części kopiującej chciałbym zignorować jeden konkretny podkatalog. Jak mogę to zrobić, pamiętając o kopiowaniu, muszę zachować grupę właścicieli i znacznik czasu. Istnieje około 700 GB danych, które należy skopiować, jeśli nie zignoruję konkretnego podkatalogu.

P Roy
źródło

Odpowiedzi:

11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Możesz także chcieć (lub nie) używać --del. Sprawdź stronę podręcznika.

Marco Mariani
źródło
Tak, to załatwiło sprawę. To działa ..
P Roy
2

Zwykle używam cpiow następujący sposób,

cd source_dir; find . -depth | cpio -pdmv dest_dir

A ponieważ jest to potok, możesz umieścić „filtr odejmowania” na środku.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

lub możesz podzielić to na kilka kroków,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

Oczywiście najpierw przetestowałbym to na czymś mniejszym, ale masz pomysł.

hotei
źródło
0

Czy można tymczasowo przenieść ( mv) duży podkatalog do innej lokalizacji, wykonać kopię, a następnie przywrócić podkatalog? Nie widzę bezpośredniej opcji, cpaby to zrobić.

Popiół
źródło
Ja też sprawdziłem man cp, nie ma sposobu, aby zignorować użycie cp. Mam 550 GB danych w tym podkatalogu i mv, co może potrwać kilka godzin.
P Roy
Zakładałem, że mv będzie operacją stosunkowo tanią - aktualizującą odniesienia do danych, a nie fizycznie przenoszącą je na dysk. Przynajmniej zawsze uważałem, że ruchy w systemie Windows są znacznie szybsze niż kopiowanie - system plików Linux może działać zupełnie inaczej.
Ash
mv na ten sam dysk twardy jest szybki. Ale kiedy robi się mv na hardiskach, myślę, że zajmuje to tyle samo czasu co cp.
P Roy
Chciałem przenieść go gdzieś na ten sam dysk twardy, aby usunąć go z drogi, a następnie skopiować pozostałe na dysk zdalny, a następnie przenieść duży plik z powrotem. Chyba że kopiujesz cały dysk z /.
Ash
0

Raczej brzydkie rozwiązanie, ale ... dlaczego nie po prostu cp wszystko w katalogu nie rekurencyjnie, a następnie skopiować poszczególne katalogi rekurencyjnie?

Journeyman Geek
źródło
-1

Dlaczego więc nie tylko

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
halfcab123
źródło