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

Языки программирования, IDE, компиляторы, интерпретаторы, гипервизоры и виртуальные среды
Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 08:29

Всем привет!

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

Необходимо инициировать соединения с локальной машины к удалённой, найти там в определённом каталоге файлы, созданные за последние сутки и передать эту выборку на локальный компьютер средствами 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 {} \;

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

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

Решение zip » 26 июл 2018, 09:13
Слепил вот чего:

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.

Перейти к ответу ➙

Аватара пользователя

WWolf
Сообщения: 1221
Зарегистрирован: 13 фев 2018, 21:51
Решено: 5
Откуда: Краснодар
Благодарил (а): 427 раз
Поблагодарили: 282 раза

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

Сообщение WWolf » 26 июл 2018, 08:31

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

Аватара пользователя

darkfenix
Сообщения: 5203
Зарегистрирован: 27 июн 2017, 10:36
Решено: 61
Откуда: Нижний Тагил
Благодарил (а): 289 раз
Поблагодарили: 961 раз

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

Сообщение darkfenix » 26 июл 2018, 08:32

Так примонтируй папку к локальной машине. Сделай что надо. Размонтируй.
Изображение

Аватара пользователя

slant
Сообщения: 1773
Зарегистрирован: 21 июн 2017, 15:09
Решено: 27
Благодарил (а): 14 раз
Поблагодарили: 770 раз

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

Сообщение slant » 26 июл 2018, 08:37

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

Аватара пользователя

Chocobo
Сообщения: 9148
Зарегистрирован: 27 авг 2016, 19:57
Решено: 198
Откуда: НН
Благодарил (а): 637 раз
Поблагодарили: 2614 раз

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

Сообщение Chocobo » 26 июл 2018, 08:39

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

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 08:48

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

Аватара пользователя

Chocobo
Сообщения: 9148
Зарегистрирован: 27 авг 2016, 19:57
Решено: 198
Откуда: НН
Благодарил (а): 637 раз
Поблагодарили: 2614 раз

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

Сообщение Chocobo » 26 июл 2018, 08:49

zip писал(а):
26 июл 2018, 08: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
Изображение
   
Изображение

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 08:52

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

Аватара пользователя

WWolf
Сообщения: 1221
Зарегистрирован: 13 фев 2018, 21:51
Решено: 5
Откуда: Краснодар
Благодарил (а): 427 раз
Поблагодарили: 282 раза

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

Сообщение WWolf » 26 июл 2018, 08:54

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

Аватара пользователя

darkfenix
Сообщения: 5203
Зарегистрирован: 27 июн 2017, 10:36
Решено: 61
Откуда: Нижний Тагил
Благодарил (а): 289 раз
Поблагодарили: 961 раз

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

Сообщение darkfenix » 26 июл 2018, 08:55

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

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 08:58


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

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

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

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 09:13

Слепил вот чего:

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.
Последний раз редактировалось пользователем 2 zip; всего редактировалось раз: 26

Аватара пользователя

WWolf
Сообщения: 1221
Зарегистрирован: 13 фев 2018, 21:51
Решено: 5
Откуда: Краснодар
Благодарил (а): 427 раз
Поблагодарили: 282 раза

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

Сообщение WWolf » 26 июл 2018, 09:15

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

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 09:20

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

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

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

Аватара пользователя

WWolf
Сообщения: 1221
Зарегистрирован: 13 фев 2018, 21:51
Решено: 5
Откуда: Краснодар
Благодарил (а): 427 раз
Поблагодарили: 282 раза

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

Сообщение WWolf » 26 июл 2018, 09:24

так rsync и так скопирует только новое и/или изменённое, зачем ещё доп выборка?

Аватара пользователя

Автор темы
zip
Сообщения: 15
Зарегистрирован: 27 сен 2017, 12:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение zip » 26 июл 2018, 09:43

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

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

Вернуться в «Программирование, скриптинг, виртуализация»