Всем здравствуйте!
Прошу помочь в таком вопросе. Нужно сохранить в архиве строго определённые типы файлов рекурсивно из всех подкаталогов с сохранением структуры подкаталогов. Сколько ни бился - сохраняются либо абсолютно все файлы, либо те которые нужно, но без вложенных каталогов. Причём неважно каким архиватором пользуешся tar, rar, zip, arj.
Заранее благодарен.
Резервное копирование
rsync может делать резервное копирование файлов с определенным расширением. Так что смотрите в сторону его.
Посмотрел rsync, всё то же самое, можно работать только по чёрному списку (исключения). А надо сохранить только определённые типы файлов. Пользовательские директории на сервере набиты горами мусора, интересуют только *.doc, *.xls ну и ещё пять-шесть видов оффисных документов, писать на всё остальное файл исключений нереально. В виндовсе всё решалось просто RAR-ом, а здесь это не работает.
И хотелось бы это делать какими то стандартными средствами Линукса, для обеспечения дальнейшей совместимости.
Посмотрел rsync, всё то же самое, можно работать только по чёрному списку (исключения).
А что мешает раскурить нечто вроде такого:
#/bin/sh
#
names="*.doc *.xls"
SOURCEPATH="/home"
LOG="/var/log/mylog"
for name in $names; do
find $SOURCEPATH -name $name -exec rsync bla-bla-bla ; -print >> $LOG
done
То есть на каждый найденный в find файл запускать правильно написанный под твою конкретную конфигурацию rsync? По моему стандартный юниксовый путь... Кроме этого ещ и find'у можно указать интервал времени, за который файло просматиривать и совсем старое в расмторение не брать.
vip-888, fsbackup попробуйте, очень гибкая настройка конфигов :-)
Нужно сохранить в архиве строго определённые типы файлов рекурсивно из всех подкаталогов с сохранением структуры подкаталогов.
find projects/ -regex ".*\.\(sh\|cpp\|c\)" | tar cjvvf test.tbz -T -сохраняет каталог projects/ вместе со всей структурой. но не все файлы, а исключительно
*.sh
*.cpp
*.c
Попробуйте сами, если не верите ;)
А что мешает раскурить нечто вроде такого:
попробуйте сначала.
это медленно и криво.
тогда уж заюзайте опцию -o команды find
что-то вроде
find . \( -name "*.x" -o -name "*.y" \) ...
а в конце лучше -print0 | xargs -0 tar -cf z.tar
find projects/ -regex ".*\.\(sh\|cpp\|c\)" | tar cjvvf test.tbz -T -
сохраняет каталог projects/ вместе со всей структурой. но не все файлы, а исключительно
*.sh
*.cpp
*.c
Попробуйте сами, если не верите
Попробовал - действительно работает, в принципе меня это устраивает. Всем спасибо. Отдельное спасибо drBatty.