У меня есть домашний сервер, содержащий достаточное количество (законно полученных) медиа-файлов. Когда в этот набор вносятся дополнения, когда меня нет, я хотел бы иметь возможность синхронизировать эти файлы с удаленной копией на моем ноутбуке.

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

Обычно добавляется только один или два файла, и ни один из существующих не изменяется. Существует ли утилита, которая может быть запущена по требованию (а не постоянно работающая служба, такая как Syncthing или BitTorrent Sync), которая способна избежать перечисления или сохранять список файлов в каждом месте в кэше?

(В идеальном мире также был бы способ не выполнять повторную синхронизацию файлов, которые были удалены на принимающей стороне, без удаления их с отправляющего сервера.)

3 ответа3

0

Согласно справочной странице rsync, это может помочь. Но, вероятно, нет.

--size-only             skip files that match in size

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

-c, --checksum
          This changes the way rsync checks if the files have been changed and are in need of a transfer.  Without this option, rsync uses a "quick check" that  (by  default)  checks  if  each
          file’s size and time of last modification match between the sender and receiver.  This option changes this to compare a 128-bit checksum for each file that has a matching size.  Gen‐
          erating the checksums means that both sides will expend a lot of disk I/O reading all the data in the files in the transfer (and this is prior to any reading that  will  be  done  to
          transfer changed files), so this can slow things down significantly.

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

https://lists.samba.org/archive/rsync/2007-June/017853.html

Хотя я никогда не находил rsync медленным. Возможно ли что-то еще происходит? Вы делаете это на каком-то действительно старом процессоре?

Существуют и другие инструменты для синхронизации файлов. Как насчет Унисон? Я никогда не пробовал это.

Как насчет написания собственного сценария для этого? Вы можете монтировать через NFS или SMB или использовать FTP и т.д. И синхронизировать данные, используя свой собственный простой код.

0

rsync проверяет временные метки и размер перед проверкой данных. Это относительно быстро, но есть задержка перед началом передачи. Это обычно довольно быстро. Однако файловая система Windows FAT имеет разрешение метки времени 2 секунды. Это может привести к сбою проверки меток времени по сравнению с системой с разрешением 1 секунда. Добавление --modify-window=1 позволяет меткам времени различаться на одну секунду и решает проблему.

Это может помочь в использовании --whole-file для медиа-файлов, так как, скорее всего, нет причин для перемещения файловых дельт. Однако если вы обновили теги ID3, дельты могут быть быстрее.

Решение , как unison , который Rsync на основе, может хорошо работать , если вы вносите изменения как на файловом сервере и ноутбук.

0

Причина, по которой rsync занимает много времени, заключается в том, что ему необходимо прочитать все данные на обоих концах, чтобы создать карты сравнения. Как только файловая система синхронизируется с определенной временной меткой, вам нужно только rsync файлы, которые изменились после этой временной метки (коснитесь файла после завершения rsync, затем используйте find ....- newer ...). В качестве альтернативы используйте AFS.

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