Структура каталогов нашего сервера похожа на это
То, для чего я хочу запланировать резервные копии, является public_html каталогами + некоторые файлы на site1/уровне (часто существуют некоторые удобные сценарии, записанные на тех уровнях, но также и существует неизбежно набор файлов чрезмерного увеличения размера там также как временные дампы дб, что я не хочу заполнять сервер резервного копирования каждое задание),
Вот то, что я хотел бы сделать, если возможный (от / размещают/):
tar -cz --include="*.sh" --include="*.php" --include="public_html/*" ./site1/ | ssh backupserver ...
Но, tar не имеет включать опции, только исключает.
Я попробовал
find ./site1/ -type f -name "*.sh" -or -name "*.php" -or -wholename "./site1/public_html/*" | xargs tar -cz | ssh backupserver ...
Но это не работает также, потому что xargs повреждает большой список файлов в блоки, заставляя каждый перезапуск tar-c команда перезаписывать предыдущий файл (и если я не использую xargs, затем существует ошибка для списка, являющегося слишком длинным).
Я не могу использовать-r опцию добавить к резервному копированию, потому что 1) это не работает над сжатыми архивами и 2) я не думаю, что это могло работать через ssh так или иначе.
Единственное решение, о котором я могу думать, состоит в том, чтобы повредить его в шаги, создающие временный файл tar локально (один к tar./site1/public_html/и другому для добавления./site1 /*. [sh|php]), затем архивирование, затем ssh, затем удаляют локальный файл. Но это кажется почти смешным на Linux.
Там некоторый формат к tar, управляют, чтобы я мог использовать это, я отсутствую?
globstar
к спасению?
shopt -s globstar
tar -cz archive.tar.gz file1 file2 subdir/**
pax
, это - Ваше время для сияния!
find ./site1/ \( -path "./site1/public_html" -prune -o -name "*.sh" -o -name "*.php" \) -print |
pax -x ustar -wf archive.tar
Или когда Вы имеете find
и pax
, что обе поддержки NUL разграничила данные:
find ./site1/ \( -path "./site1/public_html" -prune -o -name "*.sh" -o -name "*.php" \) -print0 |
pax -x ustar -0wf archive.tar