LINUX.ORG.RU

Поиск файлов старше определенной даты и последующая архивация на удаленный сервер

 , ,


0

1

Возможно ли как-то осуществить кейс указанный в теме? Нашел команду find /source/dir/ -mtime +227 | tar cvfz ssh admin@192.168.0.5:/destination/dir/archive.tar.gz, но она ругается на то, что archive.tar.gz не существует, а нужно, чтобы архив с данным именем создавался автоматически



Последнее исправление: grraf (всего исправлений: 1)

Ты хочешь чтобы все найденные файлы старше определенной даты были гзипнуты и отправлены по одному или сложены в один тар и отправлены одним файлом?

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

Чтобы все файлы были на выходе в одном таре

grraf
() автор топика

Если сделать несколько допущений, например под «старше» понимается дата изменения, то как-нибудь так:

for file in $(find . -type f -newermt "jun 10 2021" --exclude=archive.tar); do
tar rvf archive.tar "$file";
done
gzip archive.tar
scp archive.tar.gz remote.server.com:/remote/path/archive.tar.gz

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

Оригинально.

find . -type f -exec tar czf config.tgz '{}' +
anonymous
()
Ответ на: комментарий от grraf

Если тебе например будут нужны все файлы новее даты X, а создаваемый архив оказывается внутри дерева в котором происходит поиск файлов, то архив попадает в условие и мы будем паковать архив в архив в архив в архив в архив в архив.

Да, там косячок, тебе нужен не -newermt, а -not -newermt, если нужны файлы старше.

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

А есть варианты попроще? С тем же mtime.

Со скриптом вот такое выходит:

find: unknown predicate `–exclude=archive.tar’ gzip: archive.tar: No such file or directory

for file in $(find /source/dir -not -newermt «oct 31 2020» –exclude=archive.tar); do tar rvf archive.tar «$file»; done gzip archive.tar scp archive.tar.gz admin@192.168.0.5:/destination/dir/archive.tar.gz

grraf
() автор топика
Ответ на: комментарий от grraf

Ну вот анон выше посоветовал однострочник, вполне рабочий

find /source/dir -type f -not -newermt 'jun 10 2021' -exec tar czf archive.tgz {} \;
scp archive.tgz admin@192.168.0.5:/destination/dir/archive.tgz

slowpony ★★★★★
()
Последнее исправление: slowpony (всего исправлений: 2)
Ответ на: комментарий от anonymous

Пробую ваш вариант, а какой правильный синтаксис?

sudo find /source/dir/ -type f -mtime +227 -exec tar czf archive.tgz {} ; scp archive.tar.gz admin@192.168.0.5:/destination/dir/archive.tar.gz

Но получаю ошибку:

find: paths must precede expression: `scp’

grraf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.