Как я могу использовать 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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.