Задать вопрос
@smirnovv2007

Как полностью перенести всё содержимое с одного FTP сервера на другой с сохранением прав?

Есть два FTP сервера. Нужно скопировать все данные с одного на другой, не потеряв при этом права файлов. С помощью каких утилит это можно сделать? Объём и количество файлов очень большие (50 гб; десятки тысяч файлов). На первом сервере занято 49 из 50 гб. Создание архива - не вариант.
  • Вопрос задан
  • 772 просмотра
Подписаться 3 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 7
shambler81
@shambler81 Куратор тега Linux
Если у тебя есть доступ по ssh к обоим серверам то без проблем
Все что тебе нужно
1. заархивировать все на 1 сервере
2. отправить 1 архив на 2 сервер
3 распаковать там.
Но поскольку он большой то мы будем делать это в один присест
ТО есть
Архив будет идти по интернету как один файл, а следовательно скорость передачи как у архива.
Но делать мы это будем в потоке, отправляя хранение архива сразу в канал, а на той стороне сразу распаковывая, тоже сразу на лету.
То есть он не будет занимать места ни на том сервере ни на том, а сразу распакуется.
ТО есть будут все плюсы архива
и отсутствуют все минусы пофайлового хранения.
А сохранение прав это всего лишь атребут тара
Вот тут я как-раз пишу генератор для таких вещей, он сырой но основное уже работает.
https://top-engineer.com/test/
Подробней можно вникнуть тут
https://klondike-studio.ru/blog/bystro-skopirovat-...
Ответ написан
@psiklop
Теоритически для этого нужен промежуточный сервер с SSH доступом, подключаетесь с него по FTP к первой машине, забираете файлы, потом подключаетесь ко второй и скидываете, права сохранятся.
P.S. способ не от спеца)
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Вобщем у меня подобная задача стояла пол-года назад. Для облачного диска. Но я ее порешал по другому.
Ftp не понадобился. Но если что- смотри утилиту lftp. И там в скриптах у нее есть команда mirror.

~$ lftp --help
Usage: lftp [OPTS] <site>
`lftp' is the first command executed by lftp after rc files
 -f <file>           execute commands from the file and exit
 -c <cmd>            execute the commands and exit
.....
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Попробуйте server 2 server режим
https://hostadvice.com/how-to/how-to-use-ftp-to-tr...

По идее там права копируются , если не выйдет то придется действовать в 3 этапа:
копирование с сервера на сервер
баш скрипт для рекурсивного обхода и сохранения путей и прав
баш скрипт для рекурсивного обхода и назначения прав на файлы

формат файла с правами такой
"relativepath/dir/subdir/filename.xxx","666"
где первая часть это путь относительно папки, а вторая собственно права
в общем это реализуется командами dir chmod в ftp сеансе
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
ftp протокол не умеет в такое. Тем более что все еще зависит от того с какими правами и настройками запущен ftp на дестинейшене.
Ответ написан
Комментировать
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Для начала нужно понять, совпадают ли id пользователей на обоих серверах, права для которых вы хотите сохранить.
Если совпадают, и есть проблемы со свободным местом-тогда или rsync или lftp
Ответ написан
Комментировать
@mr_welk
я бы смонтировал удаленную ФС в локальную через curlftp и rsync натравил, но есть нюансы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы