Я искал довольно долго, но я нашел одно решение здесь для этого SuperUser Q&A под названием: Как мне отделить процесс от терминала, полностью? , после того, как я написал свой вопрос здесь.
| at now
Причиной ошибки является наличие пробелов или других специальных символов в именах файлов под ./img
.
Вместо опции -print
для find
используйте -print0
и соответствующую опцию -0
для `xargs':
find ./img ! -path ./img -mtime -7 -print0 | xargs -0 tar uvf `date --rfc-3339=date`-package.tar
find ./foo ! -path ./foo
вы можете использовать find -mindepth 1 ./foo
. Это гарантирует, что будут выведены только файлы внутри указанных путей. Если у вас есть GNU tar
, вы можете использовать --exclude=PATTERN
. Таким образом, вы сможете написать что-то вроде этого:
today="$(date --rfc-3339="date")"
last_week="$(date --rfc-3339="date" --date="-7 days")"
tar --no-recursion --exclude=db_connection.php --after-date="$last_week" cvf "${today}-package.tar" .
tar --after-date="$last_week" uvf "${today}-package.tar" ./require ./img ./plugin
Я пишу это на лету, попробуйте, если он работает, что-то около
tar cvf --no-recursion --after-date $yourdate $TarFile * */*
tar uvrf --after-date $yourdate $TarFile ./require ./plugin ./img