Запуск find...exec tar czvf архивирует только один файл... нужны все файлы
При попытке запустить
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 ответ
Решение
Ваша команда выполняется tar
один раз для каждого файла, и каждый вызов tar
создает вывод с тем же именем, перезаписывая тем самым предыдущий вывод. Таким образом, вы получите только последний файл. Вам нужно что-то вроде
find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz
Это должно работать нормально, пока ваш список файлов не огромен. Если это так, то вы, вероятно, захотите перейти на использование tar rvf
и делает отдельный gzip
шаг в конце.