1

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

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

У меня есть root-доступ к обоим компьютерам через SSH, но я не могу получить доступ к физическим жестким дискам.

1 ответ1

3

Сама файловая система, скорее всего, не может быть скопирована онлайн, так как она постоянно меняется.

Вы можете легко скопировать файлы, сохранив практически все в каждом файле, внутри файловой системы. Попробуйте rsync с вашего выделенного сервера:

rsync -avzHXShPs --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/

где VPS - это IP-адрес вашего VPS, а /path/to/backup_folder/ - это папка назначения на вашем выделенном сервере.

Если ваш VPS имеет другой порт SSH, вы можете сделать это:

rsync -avzHXShPs -e "ssh -p PORT" --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/

где PORT - номер пользовательского порта.

Если вы хотите передать какие-либо измененные файлы с момента начала передачи файла, просто повторите ту же команду. Если файлы были удалены из VPS, и вы хотите, чтобы удаленные файлы были удалены из резервной копии на вашем выделенном сервере, просто добавьте флаг --delete в строку rsync .


объяснение

флаги rsync

  • -a означает "архив", который содержит большинство настроек для создания почти точных копий всех файлов в указанной папке (в вашем случае, / на VPS).
  • -v означает "многословный". Он покажет вам подробную информацию о том, что копируется.
  • -z означает "сжатие", что полезно при копировании по сети, поскольку скорость сети часто ниже, чем у дисков, и вы можете сэкономить время, отправляя сжатые данные по сети.
  • -H означает "жесткие ссылки", которые сохраняют жесткие ссылки, если они важны для вас.
  • -X означает "расширенные атрибуты", которые сохраняют расширенные атрибуты. Это работает не на всех файловых системах, но rsync продолжит работу, даже если при копировании расширенных атрибутов возникнут ошибки.
  • -S означает "разреженный", что очень полезно для ускорения передачи файлов, содержащих набор двоичных нулей.
  • -h означает "читаемый человеком", который выводит читаемую человеком информацию во время передачи.
  • -s означает "защитить аргументы", полезно только в том случае, если в аргументах вашего источника или получателя есть пробелы в пути.

У меня есть горячая клавиша для ввода этой строки rsync потому что я много копирую данные, и большую часть времени удобно иметь все эти флаги.

rsync исключает

  • --exclude sys/ исключает монтирование sysfs в /sys . Без этого вы можете столкнуться с некоторыми странностями, такими как бесконечная рекурсия или файлы бесконечного размера.
  • --exclude dev/ исключает монтирование devtmpfs в /dev , которое не будет полезно на вашем выделенном сервере (и даже может представлять угрозу безопасности), поскольку устройства на двух разных серверах совершенно разные.
  • --exclude proc/ исключает монтирование proc в /proc . Системная информация в этой папке относится только к исходному серверу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .