находите/смолите, что комбинация копирует определенные файлы на одном уровне и все файлы в одном подкаталоге

Структура каталогов нашего сервера похожа на это

  • /home/site1/public_html
  • /home/site1/logs
  • /home/site1/cgi-bin
  • и т.д.... (это - стандарт при использовании virtualmin),

То, для чего я хочу запланировать резервные копии, является 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, управляют, чтобы я мог использовать это, я отсутствую?

1
задан 12 March 2014 в 20:22

2 ответа

globstar к спасению?

shopt -s globstar
tar -cz archive.tar.gz file1 file2 subdir/**
1
ответ дан 11 November 2019 в 12:50

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
0
ответ дан 11 November 2019 в 12:50

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

Похожие вопросы: