Ubuntu 16.04.2 LTS облачный сервер VMware
-maxdepth переключатель команды находки проигнорирован при использовании в корне crontab. Когда та же самая команда выполняется из командной строки, переключатель maxdepth наблюдается находкой, управляют, и является эффективным.
Эта команда архивирует только содержание каталога,/var/www/news без рекурсии в подкаталоги (Желаемое поведение):
$ (cd /; find var/www/news -maxdepth 1 -print0) | /bin/tar -C / --null -T - -zcvf /mnt/nfs/Backup-Static-Sites/backupfile.tar.gz
Этот корень crontab команда архивирует содержание всего содержания в соответствии с каталогом,/var/www/news (полностью игнорирование переключателя-maxdepth 1 / нежелательное поведение)
10 0 * * * (cd /; find var/www/news -maxdepth 1 -print0) | /bin/tar -C / --null -T - -zcvf /mnt/nfs/Backup-Static-Sites/backupfile.tar.gz
Существует ли способ активировать соблюдение переключателя maxdepth, когда команда находки выполняется из корня crontab?
Пошел с исключением каталога для остановки рекурсии с помощью tar только, устранив использование находки.
14 8 * * * /bin/tar -C / -zcvf /mnt/nfs/Backup-Static-Sites/html-News-Snapshot.tar.gz var/www/html-news.domain.tld --exclude "var/www/html-news.domain.tld/dir1" . . "var/www/html-news.domain.tld/dirN"
Другие методы, упомянутые в этом потоке, не работали, т.е. - без рекурсий и - тип F! - тип d
Поведение, которое Вы видите, является ничем, чтобы сделать с -maxdepth
, это - потому что список файлов от Вашего find
команда включает каталоги верхнего уровня, которые затем рекурсивно заархивированы tar
.
Текущие версии GNU tar
имеют --no-recursion
опция выключить рекурсивный обход каталога. Однако, если Вы не хотите архивировать пустые каталоги верхнего уровня, вероятно, простое решение состоит в том, чтобы опустить каталоги из списка путем добавления -type f
или ! -type d
к эти find
команда:
10 0 * * * (cd /; find var/www/news -maxdepth 1 ! -type d -print0) | /bin/tar -C / --null -T - -zcvf /mnt/nfs/Backup-Static-Sites/backupfile.tar.gz