LINUX.ORG.RU
решено ФорумAdmin

Как скопировать файлы с сервера на сервер?

 , ,


0

2

Здравствуйте. Имеются 2 Astra Linux сервера в сети. На одном есть бэкап портала который создаётся каждый день и разбивается на 200+ частей. Нужно его скопировать на другой так же каждый день.

В терминале команда find /var/backup/ -atime -1 type -f находит и показывает все 200+ нужных мне файлов для копирования.

Команда scp -r /var/backup.log admin@serverbackups:/home/backups копирует файл с сервера на сервер без запроса пароля (прописал через ключ)

Хочу запихнуть всё это дело в крон, проверив перед этим под пользователем admin

scp -r "find /var/backup/ -atime -1 type -f" admin@serverbackups:/home/backups

Выводит ошибку: find /var/backup/ -atime -1 type -f Permission denied

Хотя пользователя admin добавил в группу-владельца папки /var/backup/

Если скопировать просто файл из этой папки, типа scp -r /var/backup/test.sql admin@serverbackups:/home/backups то всё работает



Последнее исправление: zawibis (всего исправлений: 1)

scp -r "find /var/backup/ -atime -1 type -f" admin@serverbackups:/home/backups Если тут обычные кавычки - выглядит неправильным. Текст в кавычках останется текстом и будет восприниматься как имя файла, а чтобы выполнялась комада нужны вроде обратные кавычки ( ` ) - но это не точно.

PeleWin
()

Для копирования файлов для бекапа лучше использовать rsync, а не scp. А ещё лучше — специализированную программу для бекапа, тысячи их.

Aceler ★★★★★
()
scp -r "find /var/backup/ -atime -1 type -f" admin@serverbackups:/home/backups

даже интересно, а что эта команда по твоему должна была делать?

Я и баш видим желание скопировать файл под странным именем «find /var/backup/ -atime -1 type -f» в admin@serverbackups:/home/backups

Отдельно заслуживет внимания маниакальное желание больного копировать файлы рекурсивно. Это зачем? Ты же копируешь только файлы, а в них рекурсивно не зайти?

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

rsync -av --progress /var/backup/ admin@serverbackups:/home/backups

Эту команду можно запускать хоть 10 раз на дню, поскольку она будет пропускать все скопированное и докачивать в том числе и оюорваные части файлрв. Там же есть настройки ограничения скорости закачки и многое другое.

Или уж составлять список и кормить его scp

find /var/backup/ -atime -1 type -f -exec scp "{}"  admin@serverbackups:/home/backups

Хуже, поскольку никакой докачки не будет, но все равно хоть так.

usermod
()
Ответ на: комментарий от zawibis

rsync -av –progress /var/backup/ admin@serverbackups:/home/backups

выдаёт

bash: строка 1: rsync: команда не найдена

rsync: connection unexpectedly closed (0 bytes received so far) [sender]

rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.3]

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

Ну так через три дня они все будут там же, на бэкапе. А вот если операция с scp не пройдет, придется повторять ее полностью заново, в то время как rsync продолжит там, где оборвалось. Само собой, rsync можно сказать копировать не все файлы. Просто необходимости в этом скорее всего, уже не будет.

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

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

поэтому лучше тогда через xargs, что-то типа

(find /var/backup/ -atime -1 type -f ; echo "admin@serverbackups:/home)|xargs scp

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

Так тоже плохо.

Вообще-то xargs сам определяет, сколько аргументов взять, чтобы не превысить длину командной строки.

В этой ситуации scp это плохо по определению.

usermod
()

делайте команду проще и она будет работать. а именно создавайте бэкапы в отдельных папках и копируйте все без команды find. можно потратить кучу времени на чтение документации. но это время можно посвятить на другие задачи.

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

find, scp и rsync - отличные универсальные инструменты, которые будут пригождаться раз за разом. Так что как раз их имеет смысл изучать.

Насчет упрощения согласен. Автоматизация становится гораздо более предсказуемой и надежной, когда масимально упрощается.

usermod
()

В общем свою задачу решил тем, что поставил на оба сервера rsync и команда следующая:

rsync -avhr –progress /var/backup/* admin@serverbackups:/home/backups

zawibis
() автор топика