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

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

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

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

#1

26 июл 2018, 11: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, 12: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
Сообщения: 3893
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

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

#2

26 июл 2018, 11:31

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

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

rogoznik
Сообщения: 10040
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

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

#3

26 июл 2018, 11:32

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

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

slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

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

#4

26 июл 2018, 11:37

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

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

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

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

#5

26 июл 2018, 11: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, 15:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз
Контактная информация:

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

#6

26 июл 2018, 11:48

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

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

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

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

#7

26 июл 2018, 11:49

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
Изображение
   
Изображение

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

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

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

#8

26 июл 2018, 11:52

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

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

WWolf
Сообщения: 3893
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

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

#9

26 июл 2018, 11:54

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

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

rogoznik
Сообщения: 10040
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

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

#10

26 июл 2018, 11:55

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

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

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

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

#11

26 июл 2018, 11: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, 15:09
Решено: 2
Благодарил (а): 3 раза
Поблагодарили: 1 раз
Контактная информация:

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

#12

26 июл 2018, 12: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
Сообщения: 3893
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

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

#13

26 июл 2018, 12:15

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

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

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

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

#14

26 июл 2018, 12:20

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

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

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

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

WWolf
Сообщения: 3893
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

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

#15

26 июл 2018, 12:24

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

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

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

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

#16

26 июл 2018, 12:43

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

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

Закрыто

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя