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

Вопрос или проблема

У меня есть терабайты данных на удаленном хосте, которые я передаю.

В настоящее время я использую rsync -az. Недавно я приобрел большой внешний жесткий диск [USB-C, Toshiba]; но, похоже, он медленнее моего внутреннего SSD.

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

Если это важно: не ограничиваясь rsync, удаленный хост – это Linux x86_64, а локальный хост – это Apple Macbook Pro с M3 Pro, работающий на macOS 15.2.

Ответ или решение

Эффективный перенос данных с удаленного хоста на два жестких диска

Перенос данных с удаленного хоста на локальную машину — это задача, которая требует внимательного подхода, особенно когда вы имеете дело с большими объемами информации. В вашем случае, вы хотите организовать многопоточный процесс копирования, чтобы передать данные с удаленного сервера на два жестких диска — внутренний SSD и внешний HDD. Мы рассмотрим, как это сделать эффективно, с использованием инструментов, доступных в Linux и macOS.

Шаг 1: Подготовка к переносу

Перед началом переноса данных убедитесь, что оба жестких диска подключены и доступны для вашего MacBook Pro. Определите пути к жестким дискам:

  • Внутренний SSD: /Volumes/SSD
  • Внешний HDD: /Volumes/HDD

Шаг 2: Синхронизация с использованием rsync

Для выполнения вашей задачи с использованием rsync, вам понадобится сначала синхронизировать данные с удаленного хоста на внутренний SSD. Используйте следующую команду:

rsync -az --ignore-existing user@remote_host:/path/to/data/ /Volumes/SSD/
  • -a — это архивный режим, который сохраняет символические ссылки, права доступа и временные метки.
  • -z — сжатие данных во время передачи, что может ускорить процесс.
  • --ignore-existing — позволяет игнорировать файлы, которые уже существуют на целевом диске.

Эта команда скопирует только те файлы, которые отсутствуют на вашем внутреннем SSD.

Шаг 3: Синхронизация с внутреннего SSD на внешний HDD

После успешного завершения первой команды, вам нужно синхронизировать данные с вашего внутреннего SSD на внешний HDD. Для этого используйте следующую команду:

rsync -az --ignore-existing /Volumes/SSD/ /Volumes/HDD/

Эта команда аналогична предыдущей, но она теперь копирует данные с вашего внутреннего SSD на внешний HDD, также игнорируя существующие файлы.

Шаг 4: Автоматизация процесса

Чтобы упростить процесс переноса, вы можете создать скрипт на Bash, который будет выполнять обе команды последовательно. Создайте файл transfer_files.sh со следующим содержимым:

#!/bin/bash

# Перенос данных с удаленного хоста на внутренний SSD
rsync -az --ignore-existing user@remote_host:/path/to/data/ /Volumes/SSD/

# Перенос данных с внутреннего SSD на внешний HDD
rsync -az --ignore-existing /Volumes/SSD/ /Volumes/HDD/

Не забудьте сделать скрипт исполняемым:

chmod +x transfer_files.sh

Теперь вы можете запускать его по мере необходимости, просто выполняя:

./transfer_files.sh

Заключительные рекомендации

  1. Мониторинг выполнения: Вы можете добавить вывод состояния выполнения каждой команды, добавив --progress в команды rsync, если хотите видеть, сколько осталось скопировать.

  2. Использование флага -h: Это поможет вам видеть размер файлов в удобном формате (например, MB, GB).

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

Следуя этим шагам, вы сможете эффективно и надежно перенести данные с удаленного хоста на два жестких диска, минимизируя время и ресурсы, затраченные на этот процесс.

Оцените материал
Добавить комментарий

Капча загружается...