LINUX.ORG.RU

бекапирования с удаленного сервера через ssh и scp

 


0

1

есть сервер#1 и сервер#2 , оба с публичными ip. Как хочу сделать: сервер#2 цеплялся к серверу#1 из папки с бекапами выбирал файлы за текущую дату и потом скачивал их на сервер#2 (этот скрипт будет запускаться раз в месяц)

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

#!/bin/bash

SERVER=«host»

OUT=«vivod.txt»

SCRIPT=«/usr/bin/find /folder/backup/ -type f -mtime -1»

ssh $SERVER «${SCRIPT}» > $OUT

строчка которой я вручную скопирую файлы scp -c blowfish host:file_name /folder1/backup1/ но вписать её в скрипт как-то не получается, пробовал через переменные. Есть ещё проблема в том что файлов 5-6 а scp скормить скажем файл со списком вообще не получается.

пробовал через переменные

#!/bin/bash

SERVER=«host»

ARG1=$ARG1

SCRIPT=«/usr/bin/find /folder/backup/ -type f -mtime -1»

ssh $SERVER «${SCRIPT}» > $ARG1

scp -c blowfish $SERVER:$ARG1 /folder1/backup1/

но так не работает, подозреваю что нужно во первых в цикл scp засунуть а во вторых сделать предварительную обработку файлов перед тем как передавать переменную scp


епт. не понимаю че тут такой огород городить то, все решается одной строчкой в кроне, ну а можно смонтировать директорию на удаленном сервере по sshfs и копируй что хочешь и куда хочешь, или использовать rsync, а лучше использовать zfs и просто перекидывать снапшот по сети.

vxzvxz ★★★
()
Ответ на: комментарий от vxzvxz

rsync мне ненужны все файлы , только те которые за текущую дату сформированы, т.е. будет копироваться только 1 бекап 1 раз в месяц

zfs да мне там раз в месяц файлы перекинуть, и ради этого городить zfs

sshfs - насчет этого думал, если не найду решения для scp , сделаю через sshfs

gek7
() автор топика
Ответ на: комментарий от gek7

будет копироваться только 1 бекап 1 раз в месяц

решается в одну строчку

и ради этого городить zfs

))))))) sshfs - больший костыль

vxzvxz ★★★
()

Не знаю, что вы пытались сделать этим:

ARG1=$ARG1
Но, с конце, судя по всему, вам нужно:
while read F ; do scp -c blowfish $SERVER:$F /folder1/backup1/ ; done < $ARG1

Хотя, это будет работать только для правильных имён файлов (без пробелов, табуляций и переводов строк и т.д.). Более правильно запускать find, чтобы он делил символом '\0' имена файлов на выходе, а потом этот файл читать с помощью xargs.

mky ★★★★★
()

А rsnapshot не подходит для этих целей?

backbone ★★★★★
()
Ответ на: комментарий от vxzvxz

for file in `cat /mnt/file.txt`
do
scp /mnt/$file $user@$server:/mnt/backup/
done

спс , усё получилось

gek7
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.