My Situation: I want to copy в file from one ПК to another. Unfortunately this file isn't завершил. There is в process appending восходит to this file (only at the end).
Is there в way to easily copy this file without having to start from the beginning each украл the copy-tool thinks, it finished?
Is there for example any possibility to tell tools like scp/rsync/whatever to wait for example 20 seconds after finishing в download - and if the file changes, just download this дополнительный бит of восходит?
Or is there maybe в way to let the download start with байт X?
Does anyone know в solution? Thanks in advance!
Лучший способ состоял бы в том, чтобы иметь процесс, который создает файл, также создают удаленный файл одновременно. Или путем записи непосредственно в удаленное местоположение или при помощи чего-то как tee
к обоим данным канала к, например, ssh
соединение и в локальный файл. Это должно было быть сделано при запуске процесса все же.
Так как файл уже создается, да, можно использовать rsync
для него. По умолчанию, rsync
только копирует обновленные данные поэтому, если Вы просто работаете rsync
каждые несколько минут, Вы получите то, что Вы хотите. Вы могли использовать метод решения "в лоб":
while :; do rsync -u source destination; sleep 20; done
Это будет работать в бесконечном цикле, копируя source
кому: destination
только если source
отличается. После того как процесс, который создает файл, закончился, можно остановить его с Ctrl+C.
Более изящный путь состоял бы в том, чтобы контролировать файл. Если это создается на machineA
и скопированный в machineB
, Вы могли сделать это от machineB
(это предполагает, что Вы имеете без пароля ssh
настраивать):
while [[ $(ssh machineA md5sum < /path/to/file) != $(md5sum < /path/to/file) ]] do
rsync -uv aa b
sleep 20
done
Обратите внимание, что это остановится в первый раз, когда эти два файла являются тем же. Если Вы регистрируете процесс создания, не пишет больше 20 секунд и затем возобновляется, необходимо будет скопировать снова вручную.
Вы могли бы изучить использование incron для Вашего rsync для выполнения, когда файл изменяется, т.е. IN_MODIFY, если это - долгосрочная синхронизация файлов, Вам нужно.
http://www.linux-magazine.com/Issues/2014/158/Monitoring-with-incron
http://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/
http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html
, Если это - короткий срок, последний цикл с условием продолжения terdon может быть более быстрым для установки.