Как загрузить последний файл в папке с помощью scp?

Существуют различные пути, которыми можно сделать журнал. Но первое и передовая вещь - то, что на самом деле Вы хотите вставить свой журнал. Можно сделать это различными способами:

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

    command | tee log.txt
    

    Вышеупомянутая команда отобразит вывод к терминалу, а также это перенаправит вывод в файл log.txt.

  2. Команда сценария делает машинописный текст (копия) всего распечатанного на Вашем терминале:

    script -a log.txt
    
10
24.05.2017, 19:16
3 ответа

Предположим, что у Вас есть переменные server и dir определенный, можно сделать

$ dir="~"
$ server="user@server.com"
$ scp $server:$dir/$(ssh $server 'ls -t $dir | head -1') .

Где Вы сначала ищете новейший файл и затем копируете его.

Примечание: Я не проверял его на надежность (например, при этом последняя запись была папкой),

12
27.01.2020, 20:02
  • 1
    Если это - каталог, который не будет scp ничто. Необходимо использовать scp -r. Корректный –  slm♦ 10.07.2013, 11:06
  • 2
    @slm, но он не мог бы хотеть копировать это. –  Bernhard 10.07.2013, 11:10
  • 3
    Если scp доберитесь прервал его, должен будет перезапустить копирование с начала, rsync может возобновиться от того, где это кончило. –  slm♦ 10.07.2013, 11:24

scp является немым в том смысле, что это просто вслепую копирует файлы от источника до места назначения. Если Вы захотите что-то, что это более интеллектуально о копировании файлов, то необходимо будет использовать инструмент такой как rsync.

$ rsync -avz root@rimmer.sk:'$(find /home/rimmer/backups/ -ctime -1)' /home/rimmer/backups/

Это только скопирует файлы, которые отсутствуют или изменились из резервного каталога rimmer.sk в прошлый день (-ctime-1) к каталогу Вашего локального резервного копирования.

-ctime n
   File's  status  was last changed n*24 hours ago.  See the comments for 
   -atime to understand how rounding affects the interpretation of file 
   status change times.

Ссылки

1
27.01.2020, 20:02
  • 1
    Проблемой с rsync является то же. Если я был в режиме офлайн в течение 2 дней, это пытается скопировать все резервные копии со всех дней, в которых я не требуюсь вообще, и огромно. –  Richard Rodriguez 10.07.2013, 10:54
  • 2
    @RichardRodriguez - Хорошо обновите свой вопрос и будьте более конкретными, что Вы после. –  slm♦ 10.07.2013, 10:57
  • 3
    @slm: Я думаю, что вопрос в порядке как есть. Я просто хочу загрузить последний файл в каталоге. Что больше я могу объяснить об этом? :) –  Richard Rodriguez 10.07.2013, 10:58
  • 4
    @RichardRodriguez - какие файлы находятся в этом каталоге? Демонстрационный список был бы полезен. –  slm♦ 10.07.2013, 10:59
  • 5
    Почему вниз голосуют? –  slm♦ 10.07.2013, 17:41

Немного поздно для вечеринки, но, возможно, решение с ssh и rsync будет работа у некоторых:

source_host="yourhost.com"
source_dir="/a/dir/on/yourhost.com/"
target_dir="/the/dir/where/last_backup/will/be/placed"
last_backup=$(ssh user@${source_host} "ls -t ${source_dir} | head -1")
if [ "${last_backup}" == "" ]; then
    echo "ERROR: didn't find a backup, cannot continue!"
else
    echo "the last backup is: ${last_backup}"
    rsync -avzh user@${source_host}:${source_dir}/${last_backup} ${target_dir}
fi
0
27.01.2020, 20:02

Теги

Похожие вопросы