Файлы tar создаются за последние 15 минут и отправляются на мой локальный компьютер.(Используя Cygwin) - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь создать shell script, чтобы сделать tar из выбранного списка файлов с именем файла, начинающимся с AppLog , созданного в течение последних 15 минут на удаленном сервере.tar затем должен scp файлы на мою локальную машину.

Моя текущая проблема заключается в том, что опция find выбирает файлы и выводит их список, но когда создается tar, только последний 1 файл архивируется, хотя в * 1011 может быть более 1 элемента.* выход.Пожалуйста, просмотрите мой скрипт ниже и сообщите.

Обратите внимание, я использую Cygwin для запуска этого скрипта на Win7.

#!/bin/bash
Systime=`date +%F-%H%M%S`
sshpass -p xxxxxx ssh root@xxx.xxx.xxx.xxx "cd /path/to/dir/with/logs && find AppLog* -cmin -15 -type f -exec tar -zcvf /dest/sys01-$Systime.tar.gz {} \;"
sshpass -p xxxxxx scp root@xxx.xxx.xxx.xxx:/dest/sys01-$Systime.tar.gz . 
sshpass -p xxxxxx ssh root@xxx.xxx.xxx.xxx "rm -rf /dest/sys01-$Systime.tar.gz"

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Команда find выполняет tar для всех найденных файлов.Таким образом, вы перезаписываете файл tar каждый раз, по этой причине присутствует только последний файл.

Вам нужно выполнить tar с полным списком, только один раз.

cd /path/to/dir/with/logs && find AppLog* -cmin -15 -type f | xargs tar -zcvf /dest/sys01-$Systime.tar.gz 
0 голосов
/ 10 июня 2018

Ах!в конце концов.Понял.

sshpass -p xxxxxx ssh root@xxx.xxx.xxx.xxx "cd /path/to/dir/with/logs && find . -name 'Applog*.log' -cmin -15 -print | xargs tar cvf /dest/Applog-$Systime.tar.gz
...