4

В настоящее время я использую это: tar -pczf backup.tar.gz *

на tar.gz все. Хотя есть и другие резервные копии (в других папках), обычно это единственные файлы размером более 50 Мб. Как я могу исключить их? Кроме того, кто-нибудь знает, как я могу исключить jpg/gif/pngs? Спасибо

5 ответов5

5

Вы можете передать список файлов в tar напрямую (с помощью переключателя T ), то есть:

find dir/ -size -50M | tar -czf test.tgz -T - --exclude '*.gif' --exclude '*.jpg'
3

Вы можете объединить tar с find, чтобы выбрать только файлы определенного размера: find . -size -50M возвращает список всех файлов размером менее 50 МБ, которые затем можно передать в tar.

Редактировать Не заметил ваш второй вопрос, когда я впервые ответил: чтобы исключить файлы на основе их расширения, просто направьте вывод find в grep: find ... | fgrep -v \*.jpg \*.png etc. (не проверено).

1

Расширяя предложение Артура, опция tar предназначена для добавления. Так что-то подобное может сделать это.

 find /path/to/dir  -size -50M -exec tar -rvpf backup.tar \;

РЕДАКТИРОВАТЬ: -exec нуждается в завершающей строке "\;" (без кавычек).

Вы не можете добавить к сжатому архиву, поэтому вам придется сжать его (или bzip2) отдельно.

Объедините с решением wds для исключения изображений.

1

Исключения также можно сделать с помощью find :

find -maxdepth 1 -size -50M -not -regex ".*/.*\.\(jpg\|gif\|png\)$" | tar . . .
0

У tar есть опции для исключения файлов, соответствующих определенным шаблонам, но не по размеру.

--exclude = ОБРАЗЕЦ
исключить файлы, соответствующие PATTERN
-X, --exclude-from = FILE
исключить файлы, соответствующие шаблонам, указанным в FILE

" Ubuntuforum " имеет хороший скрипт для резервного копирования файлов и исключения файлов в зависимости от размера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .