
У меня капризный домашний интернет, rsync может отключиться в любой момент, и мои большие файлы придется перезагружать с самого начала.
Есть ли способ, например, разделить файл размером в один ГБ на части по 50 МБ, отправить их в пункт назначения и затем объединить? Таким образом, даже если файл будет обрезан, у меня останется некоторый процент от него, сохраненный на другом конце.
решение1
Этот человек уже дал отличное объяснение: https://unix.stackexchange.com/a/165417/446381
Поэтому, если я хочу достичь своей цели, мне нужно использовать --append-verify
флаг с rsync.
Мне кажется, что это --partial
немного излишне. Он переносится как скрытые файлы, а затем переименовывается в частичный файл. Что мне не нравится, потому что control-C может нарушить этот процесс переименования.
решение2
Короткая версия: Чтобы rsync лучше перезапускался с места остановки, добавьте флаг --inplace
. Не нужно разбивать большие файлы.
Более длинная версия:
Разбить файл на более мелкие и перенести каждый — хорошая идея. Однако вы слишком усердно работаете. Внутри rsync разбивает файлы на куски по 64k... что-то вроде того. Есть способ сделать rsync
то, что вы хотите: добавить --inplace
флаг.
Давайте рассмотрим более масштабную проблему, с которой вы столкнулись: ваше интернет-соединение ненадежно, и вам нужен способ отправки больших файлов.
Если вы используете --inplace
флаг (который подразумевает --partial
), вы получите желаемый результат. Каждый раз, когда передача прерывается, rsync
файлы будут оставаться в состоянии, которое делает ее эффективной для продолжения с того места, где она остановилась, при следующем запуске (то же самое) rsync
.
Просто используйте --inplace
и запустите команду rsync несколько раз, пока все не будет скопировано.
Если вы очень параноидальный, после успешного копирования всех файлов сделайте еще один проход, добавив флаг --checksum
( -c
). Это выполнит очень медленную побайтовую повторную проверку вместо использования временной метки файла, чтобы узнать, какие файлы можно пропустить. Поскольку все файлы уже были правильно скопированы, больше работы не должно быть. Тем не менее, я делаю это иногда просто для спокойствия. Вы не хотите использовать этот флаг во время начальных запусков, потому что это будет очень медленно и расточительно, так как он будет перечитывать каждый блок каждого файла.