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.

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.


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ł.



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ć.


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?


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.