我正在尝试使用 smbclient put 在远程复制期间显示进度条,可能使用pv或dialog或任何其他选项。
smbclient-put 命令工作正常:
smbclient //usbrouter/backup --user=myusername mypassword -c "put /media/DOC/BackupAuto/work_backup.tar.gz work_backup.tar.gz"
但我找不到任何方式来显示副本的进度。有人有解决方案/替代方案吗?
谢谢。
当我想检查不支持进度条或忘记以进度条模式启动它的文件传输操作时,我会这样做。
计算出本地文件副本的总大小 ( ) ,work_backup.tar.gz
例如使用或。然后转到目标文件的位置(与或仅在同一台机器上)。问题ls
stat
du
ssh
cd
watch -- du -h work_backup.tar.gz
这有点 hacky,但即使在开始相应的复制工作后它仍然有效,而且它几乎适用于我能想象的每一种复制机制。
正如您所提到pv
的,非常适合这项工作:
file="work_backup.tar.gz"
pv "/media/DOC/BackupAuto/${file}" \
| smbclient \
--user=myusername%mypassword \
--command "put - '${file}'" \
//usbrouter/backup
或者反过来,随着进度拉动:
file="work_backup.tar.gz"
size="$( \
smbclient \
--user=myusername%mypassword \
--command "ls '${file}'" \
//usbrouter/backup \
2> /dev/null \
| grep "${file}" \
| awk '{print $3}')"
smbclient \
--stderr \
--user=myusername%mypassword \
--command "get '${file}' /dev/stdout" \
//usbrouter/backup \
| pv -s "${size}" \
> "/media/DOC/BackupAuto/${file}"
强制性旁注:您不应该像这样指定密码,--authentication-file
而是使用其他选项之一