Существует ли простая команда/скрипт оболочки, которая поддерживает исключение определенных файлов/папок из архива?
У меня есть каталог, который нужно заархивировать с подкаталогом, содержащим несколько очень больших файлов, которые мне не нужно резервировать.
Не совсем решения:
Команда 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 .