Существует ли простая команда / скрипт оболочки, которая поддерживает исключение определенных файлов / папок из архива?
У меня есть каталог, который должен быть заархивирован с подкаталогом, содержащим несколько очень больших файлов, которые мне не нужно резервировать.
Не совсем решения:
Команда tar --exclude=PATTERN
соответствует заданному шаблону и исключает эти файлы, но мне нужно игнорировать определенные файлы и папки (полный путь к файлу), в противном случае допустимые файлы могут быть исключены.
Я также мог бы использовать команду find, чтобы создать список файлов и исключить те, которые я не хочу архивировать, и передать список в tar, но это работает только с небольшим количеством файлов. У меня десятки тысяч.
Я начинаю думать, что единственное решение - создать файл со списком исключаемых файлов / папок, затем использовать rsync --exclude-from=file
для копирования всех файлов в каталог tmp, а затем использовать tar для архивирования этого каталога.
Кто-нибудь может придумать лучшее / более эффективное решение?
РЕДАКТИРОВАТЬ: решение Чарльза Ма работает хорошо. Главное, что --exclude='./folder'
ДОЛЖНО быть в начале команды tar. Полная команда (сначала cd, поэтому резервное копирование относится к этому каталогу):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
не обязательно должен быть первым, но он должен находиться где-то перед исходным каталогом (протестировано с tar 1.29 на Cygwin).