Копирование файла Linux с ETA?

Я копирую большое количество файлов между дисками. Там примерно 16 ГБ данных. Я хотел бы видеть информацию о прогрессе и даже приблизительное время выполнения из командной строки.

Любой совет?

3 ответа

Решение

Использование rsync --human-readable --progress,

Для отдельных файлов и блочных устройств также есть pv, И если вам действительно нужен точный индикатор, попробуйте использовать tar с PV - что-то вроде этого:

source=/the/source/directory
target=/the/target/directory
size=$(du -sx "$source")
cd "$source"
find . xdev -depth -not -path ./lost+found -print0 \
    | tar --create --atime-preserve=system --null --files-from=- \
          --format=posix --no-recursion --sparse \
    | pv --size ${size}k \
    | { cd "$target"; \
        tar --extract --overwrite --preserve-permissions --sparse; }

Имейте в виду, однако, что GNU tar пока не поддерживает ACL или расширенные атрибуты, поэтому, если вы копируете файловые системы, смонтированные с опциями "acl" или "xattrs", вам нужно использовать rsync (с "--acls" а также "--xattrsварианты). Лично я использую:

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials \
    --one-file-system --8-bit-output --human-readable --progress /source /target

Также посмотрите, хотите ли вы использовать --delete и / или --numeric-ids опции.

Вместо dd Я бы предложил pv Например:

% tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DEST 

Ты пытался rsync -P? Если вы используете ddнапример, tar -cf - src | dd | (cd dest; tar -xf -) Вы должны быть в состоянии использовать Ctrl-T (SIGINFO), чтобы увидеть свой прогресс.

Другие вопросы по тегам