Я бы написал функцию секундомера, подобную той, которую я опубликовал здесь , и вызвал бы ее, сообщая ей, что нужно следить за идентификатором процесса команды, которую вы выполняете (обратите внимание, что это предполагает GNUdate
):
#!/bin/bash
stopwatch(){
date1=`date +%s`;
while kill -0 $1 2>/dev/null; do
printf "Elapsed time: %s\r" "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)";
sleep 0.1
done
}
find /path/to/dir > output 2> error &
stopwatch $!
Обратите внимание, что этот подход означает, что если вы завершите сценарий с помощью Ctrl + C , процесс find
продолжит работу в фоновом режиме. Решение Стефана лучше.
Ваше описание не соответствует тому, как должен работать --ignore-existing
. Это действительно должно предотвратить копирование (еще более новых )файлов, которые уже существуют в месте назначения.
$ rsync -a a/ b/
$ touch a/new a/update
$ rsync -ai --ignore-existing a/ b/
.d..t......../
>f++++++++++ new
$ ls -ln */{new,update}
-rw-r--r-- 1 34570 344586812 0 Aug 17 14:50 a/new
-rw-r--r-- 1 34570 344586812 7 Aug 17 14:50 a/update
-rw-r--r-- 1 34570 344586812 0 Aug 17 14:50 b/new
-rw-r--r-- 1 34570 344586812 7 Mar 26 17:02 b/update
a/update
теперь имеет более позднюю отметку времени, но не обновляется rsync.
Не могли бы вы еще раз запустить rsync,но добавить флаг -i
и показать вывод для существующих файлов? Он добавит строку для скопированных файлов по причине копирования. Мне интересно, есть ли там какая-то информация, которая укажет на проблему.