Страница 1 из 1

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:29
zip
Всем привет!

Задача такая:

Необходимо инициировать соединения с локальной машины к удалённой, найти там в определённом каталоге файлы, созданные за последние сутки и передать эту выборку на локальный компьютер средствами SCP.


Сейчас я использую (и это работает корректно):

scp -r user@server:/some/directory /home/backups

Но я не хочу выгружать весь каталог, он большой, а только эти файлы - FIND /some/directory -mtime +1

Как я могу корректно совместить эти две команды (SCP и FIND)?

P.S.

Я знаю, что существует такой метод:

find /some/directory -mtime +1 -exec scp -r /some/directory user@server:/home/backups {} \;

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

Подскажите корректный синтаксис.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:31
WWolf
zip, rsync пользуй. жмёт на лету, качает только изменения и много других плюшек, которые понадобятся позже :)

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:32
rogoznik
Так примонтируй папку к локальной машине. Сделай что надо. Размонтируй.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:37
slant
Вместо SCP посмотрите в сторону sshfs - будет намного проще с подобными пожеланиями. http://www.linux.unn.ru/debian/node/54
Просто монтируете удаленную машину через ssh и делаете там с файлами что хотите в рамках прав, как на локальной.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:39
Chocobo
файндом вытащить список файлов удаленной машины,
ssh user@server "find /some/directory -mtime +1" > куданибудь.тхт
а затем циклом перебрать его на вызов scp с уже с локальной. типа такого
for file in $LIST; do scp user@server:$file /local/path/; done

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:48
zip
WWolf писал(а):
26 июл 2018, 11:31
zip, rsync пользуй. жмёт на лету, качает только изменения и много других плюшек, которые понадобятся позже :)
Вот эта идея мне нравится больше всего. С помощью rsync как раз делаю регулярные копии некоторых компонентов.
Но какой корректный синтаксис? Подключиться -> выбрать -> передать.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:49
Chocobo
zip писал(а):
26 июл 2018, 11:29
Я знаю, что существует такой метод:

find /some/directory -mtime +1 -exec scp -r /some/directory user@server:/home/backups {} \;

Но это не вариант, так как инициализация должна происходить с локальной машины, а не наоборот.
И еще немножко (хотя не, не немножко) откровенной шизофрении :crazy:

find /some/directory -mtime +1 -exec ssh user@server2 "scp -r user@server:/home/backups {} /some/directory " \;

файнд удаленной машины долбится обратно на первую и оттуда инициирует scp, как задумано :-D

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:52
zip
darkfenix писал(а):
26 июл 2018, 11:32
Так примонтируй папку к локальной машине. Сделай что надо. Размонтируй.
Традиционными средствами mount unmount?
Интересно, сейчас почитаю об этом. Если не сложно, напишите как примонтировать удалённый каталог. Разве в mount/unmount есть такая возможность? Или это комбинированный приём?

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:54
WWolf
zip, такой же как и у SCP...
rsync -avz user@server:/home/backups /some/directory
в итоге у тебя в /some/directory будет лежать свежая версия с server:/home/backups
при этом скопируются только обновленные файлы, да ещё и на лету будет сжатие при передаче, что б меньше сеть нагибать

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:55
rogoznik
zip, в данном случае предложена только идея.
Для монтирования можно использовать предложенное в#4. А после монтирования уже что больше нравится. Хоть твой вариант с find, хоть rsync.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 11:58
zip

И еще немножко (хотя не, не немножко) откровенной шизофрении :crazy:

find /some/directory -mtime +1 -exec ssh user@server2 "scp -r user@server:/home/backups {} /some/directory " \;

файнд удаленной машины долбится обратно на первую и оттуда инициирует scp, как задумано :-D
Ащ, Хардкор! Сохраню себе, попробую на виртуалке.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 12:13
zip
Слепил вот чего:

rsync -avz --files-from=<(ssh user@server 'find /backups/ -type f -mtime -1 -exec basename {} \;') user@server:/backups/ /home/user/backups

Жохает!

Спасибо друзья за подсказки.

P.S. Одна беда, при таком раскладе не стартует из крона. Крон начинает отрабатывать только если эту команду записать в .sh (Со всеми прибамбасами: #!/bin/bash) и сам файл добавить в crontab.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 12:15
WWolf
zip писал(а):
26 июл 2018, 12:13
--files-from=<(ssh user@server 'find /backups/ -type f -mtime -1 -exec basename {} \;')
а какой смысл сей конструкции? чёт не допераю...

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 12:20
zip
--files-from=<(ssh user@server 'find /backups/ -type f -mtime -1 -exec basename {} \;')
--files-from - указывает какие конкретно файлы надо тащить из списка.

Дальше идёт соединение и выборка, а затем, когда выборка сделана, выполняется basename, очищающий названия файлов от путей (здесь в буфер попадает выбранная группа файлов). Это весьма удобно в том смысле, что нет необходимости писать результат поиска в файл.

Реально работает, проверил под разными соусами.

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 12:24
WWolf
так rsync и так скопирует только новое и/или изменённое, зачем ещё доп выборка?

SCP + FIND с инициацией с локальной машины

Добавлено: 26 июл 2018, 12:43
zip
WWolf писал(а):
26 июл 2018, 12:24
так rsync и так скопирует только новое и/или изменённое, зачем ещё доп выборка?
Точно. Перемудрил.

А вообще, пригодится. Выборку ведь можно делать по каким хочешь признакам, мало ли чего понадобится.
И вот сейчас весь директорий грузить нет необходимости, только последний файл, из тех что делаются посуточно. Если весь каталог выгрузить, больше 30 гиг тащить придётся. А нужен только последний.