Как я могу использовать cp для копирования каталога, но игнорировать определенный подкаталог в Linux

9

Из-за проблемы с жестким диском я пытаюсь переместить раздел с одного жесткого диска на другой. Я следую за http://www.ibm.com/developerworks/library/l-partplan.html статьей, чтобы сделать это. В части копирования я хотел бы игнорировать один конкретный подкаталог. Как я могу добиться этого, помня при копировании, что я должен сохранить свою группу владельцев и метку времени. Существует около 700 ГБ данных, которые необходимо скопировать, если я не игнорирую конкретный подкаталог.

П Рой
источник

Ответы:

11

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

Вы можете (или нет) использовать --delтакже. Проверьте страницу руководства.

Марко Мариани
источник
Да, это помогло. Это работает ..
П Рой
2

Обычно я использую cpioследующим образом,

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

А так как это конвейер, вы можете поместить «фильтр вычитания» посередине.

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

или вы можете разделить это на несколько шагов,

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

Конечно, я бы сначала проверил это на чем-то меньшем, но вы поняли.

Хотей
источник
0

Вы можете написать простой скрипт bash с циклом, чтобы игнорировать определенный путь, который вы не хотите копировать, и копировать остальное. Другим решением могут быть регулярные выражения. Вы можете прочитать о сценариях bash здесь -> http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html Руководство по регулярным выражениям здесь -> http: //www.regular-expressions. Информация/

тапан
источник
0

Можете ли вы временно переместить ( mv) большой подкаталог в другое место, сделать копию, а затем восстановить подкаталог? Я не вижу прямой возможности cpсделать это.

ясень
источник
Я тоже проверил man cp нет способа игнорировать использование cp. У меня есть 550 ГБ данных в этом подкаталоге и mv, что может занять несколько часов.
П Рой
Я предполагал, что mv будет относительно недорогой операцией - обновлять ссылки на данные, а не физически перемещать их на диске. По крайней мере, я всегда считал, что перемещение в Windows происходит намного быстрее, чем копирование - файловая система Linux может работать совершенно иначе.
Эш
М.В. на тот же жесткий диск быстро. Но когда кто-то делает mv через hardisks, я думаю, что это занимает столько же времени, сколько и cp.
П Рой
Я хотел переместить его куда-нибудь на тот же жесткий диск, чтобы убрать его с дороги, затем скопировать оставшееся на удаленный диск, а затем переместить большой файл обратно. Если вы не копируете весь диск из /.
Эш
0

Скорее уродливое решение, но ... почему бы просто не рекурсивно копировать все содержимое каталога, а затем рекурсивно копировать отдельные каталоги?

Подмастерье Компьютерщик
источник
-1

Так почему бы не просто

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
halfcab123
источник