LINUX.ORG.RU
ФорумAdmin

как на шелле сделать бекап части системы по имени?


0

0

говорю я find / | grep file.ext

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

Можно в принципе перлсркипт написать, который будет создавать эдакое дерево каталогов, но оно муторно и долго... Может есть чего готовое из стандартных утилит?

☆☆

если тару передать аргумент файл -- он забэкапит файл, если передать директорию -- то всю директорию. Все с полными путями. Аргументов может быть много.

Так что можно просто: tar czf archive.tgz `find / | grep file.ext`

Или как вариант pax или cpio -- чтобы не наткнуться на лимит кол-ва аргументов

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

харгс в данном случае нехорошо -- если аргументов будет много, то tar вызовется несколько раз и перетрет архив (без сигнализации ошибки)

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

спасибо большое всем! все вроде получилось =)

д.

vilfred ☆☆
() автор топика

Тупо, но просто:

find / | grep moo | xargs cp -a --parents --target-directory=/the/path

(Тупо потому, что файл /home/moo/moo скопируется как минимум дважды)

Dselect ★★★
()
Ответ на: комментарий от dilmah

> харгс в данном случае нехорошо -- если аргументов будет много,

65536 файлов? Ого! Ну тогда можно tar -A сказать...

Dselect ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.