Чи є проста команда / скрипт оболонки, яка підтримує виключення певних файлів / папок з архіву?
У мене є каталог, який потрібно заархівувати з підкаталогом, який містить ряд дуже великих файлів, які мені не потрібно робити резервну копію.
Не зовсім рішення:
tar --exclude=PATTERN
Команда відповідає заданим шаблоном і виключає ці файли, але мені потрібні конкретні файли & папки , які будуть ігноруватися (повний шлях до файлу), в іншому випадку дійсні файли можуть бути виключені.
Я також міг би використовувати команду find для створення списку файлів і виключення тих, які я не хочу архівувати, і передавати список в tar, але це працює лише з невеликою кількістю файлів. У мене десятки тисяч.
Я починаю вважати, що єдине рішення - створити файл із переліком файлів / папок, які слід виключити, потім скористайтеся rsync з, --exclude-from=file
щоб скопіювати всі файли в каталог tmp, а потім скористатись tar для архівації цього каталогу.
Чи може хтось придумати краще / ефективніше рішення?
EDIT: Рішення Чарльза Ма працює добре. Велика проблема полягає в тому, що --exclude='./folder'
ОБОВ'ЯЗКОВО бути на початку команди tar. Повна команда (спочатку cd, тому резервне копіювання відносно цього каталогу):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
не повинно бути першим, але воно повинно бути десь перед вихідним каталогом (тестоване з tar 1.29 на Cygwin).