
Я копирую большой объем файлов между дисками. Там примерно 16 ГБ данных. Я хотел бы видеть информацию о ходе выполнения и даже предполагаемое время завершенияиз командной строки.
Любой совет?
решение1
Использовать 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
.
решение2
Вместо этого dd
я бы предложилpv
, например:
% tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DEST
решение3
Вы пробовали rsync -P
? Если вы используете dd
, например, tar -cf - src | dd | (cd dest; tar -xf -)
вы должны иметь возможность использовать Ctrl-T (SIGINFO), чтобы увидеть свой прогресс.