1

При попытке запустить

find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;

Я получаю список файлов

./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz

Но архив получает только последний элемент

 tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root       506 2014-06-18 03:21 ./qdiskd.log-20140618.gz

Что я делаю неправильно?

1 ответ1

0

Ваша команда запускает tar один раз для каждого файла, и каждый вызов tar создает вывод с тем же именем, перезаписывая предыдущий вывод. Таким образом, вы получите только последний файл. Вам нужно что-то вроде

find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz

Это должно работать нормально, пока ваш список файлов не огромен. Если это так, то вы, вероятно, захотите перейти на использование tar rvf и в конце сделать отдельный шаг gzip .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .