![Резервное копирование файлов с сервера (статический IP) на домашний сервер (динамический IP)](https://rvso.com/image/1576011/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5%20%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D1%81%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20(%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20IP)%20%D0%BD%D0%B0%20%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%20(%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20IP).png)
Я уже знаком с ними и использую rsync, scp-передачи, tar, 7z и т. д., однако ни один из них не решает проблему резервного копирования, которую я намерен выполнять достаточно регулярно.
У меня есть удаленный сервер с 80% занятого пространства на 100 ГБ SSD, с которого я хотел бы сделать резервную копию. На сервере более 10 000 небольших файлов, поэтому поможет базовый tarball или какое-то промежуточное сжатие (вроде rsync -z).
У меня дома есть сервер, на который я хотел бы выполнять резервное копирование, но он использует динамический IP-адрес.
Проблема в том, чтобы использоватьrsync-zилиscp и tar (через канал)Это нужно сделать на удаленном сервере, но этот сервер не видит мой домашний сервер, так как у него динамический IP-адрес.
Поэтому я могу выполнять только команды на своем домашнем сервере, например:scp пользователь@удаленныйсервер:/файлы/для/резервной/копии /home/user/backupsно он не может использовать сжатие, поэтому передача огромного количества файлов занимает очень много времени.
Есть ли более быстрый способ?
P.S. Мне не нужно хранить права доступа к файлам и т.п., как это делает tarball.
Редактировать: Из-за ограниченного места на удаленном сервере я не могу сделать tarball там и загрузить на домашний сервер. Поэтому это должно быть в реальном времени.
решение1
Почему нельзя использовать инициировать rsync
из резервной цели? Нет никаких неотъемлемых ограничений, rsync
которые бы это предотвратили. Запуск
rsync -avz [email protected]:/data /backupdir
на целевом сервере резервного копирования (домашнем сервере) должно быть сделано именно это.
решение2
Существует множество вариантов. Самый простой — просто добавить команду -C в SSH или что-то в этом роде, что включит сжатие для ссылки.
Более сложным (и быстрым, будьте уверены в большом количестве маленьких файлов и задержке) решением было бы отказаться от scp и использовать канал для сжатия данных на лету. Что-то вроде tar -cz /path/to/backup | SSH user@remote "cd /path; tar -xz" сожмет и распакует файлы, используя сжатие gzip. Конечно, ничто не мешает вам использовать другую команду после ssh, если, например, вы просто хотите сохранить сжатый файл, вы можете использовать "cat > /path/to/file.tar.gz" вместо этого.
Мне непонятно, почему вы здесь говорите о динамических IP. Если это создает проблему, вы можете использовать динамический DNS или настроить VPN с сервером на статическом или инициировать pull с динамического IP вместо push со статического.