Как архивировать с игнорированием файлов размером более 100 МБ

Я пытаюсь архивировать файлы с помощью tar и игнорирую файлы размером более 100 МБ. Это возможно?
PS: не нужно использовать смолу.

2 ответа

Решение

Да, возможно, есть еще несколько способов сделать это, но вам, вероятно, лучше всего find как это так перестраиваемо

find /path/to/dir -size -100M | xargs tar cvf archive.tar

или же

tar cvf archive.tar $(find /path/to/dir -size -100M)

Если в текущей папке есть другие каталоги, которые вы не хотите архивировать, используйте:

find /path/to/dir -maxdepth 1 -size -100M | xargs tar cvf archive.tar

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

Как всегда, есть миллиард способов сделать это.

find /path/ -size -100M | sed 's/ /\\ /g' | xargs tar cvf archive.tar

find /path/ -size -100M -exec echo '"{}"' \; | xargs tar cvf archive.tar

Просто исключите большие файлы, как это:

tar cf archive.tar / path / to / archive --exclude-from <(найти / path / to / archive -size + 100M)

Другие вопросы по тегам