在smbclient放置期间的进度条

时间:2012-07-26 09:15:43

标签: linux bash

我正在尝试使用smbclient put在远程复制过程中显示进度条,可能使用 pv 对话框,或任何其他选项。

smbclient-put命令工作正常:

smbclient //usbrouter/backup --user=myusername mypassword -c "put /media/DOC/BackupAuto/work_backup.tar.gz work_backup.tar.gz"

但是我找不到任何方式显示副本的进度。任何人都有解决方案/替代方案吗?

感谢。

2 个答案:

答案 0 :(得分:10)

当我想检查不支持进度条的文件传输操作或我忘记在进度条模式下启动时,我会这样做。

计算文件本地副本的总大小(work_backup.tar.gz),例如使用lsstatdu。然后转到目标文件的位置(使用ssh或仅cd,如果它在同一台计算机上)。问题

watch -- du -h work_backup.tar.gz

这有点hacky,但它仍然可以在启动相应的复制工作后工作,它几乎适用于我能想象的每个复制机制。

答案 1 :(得分:0)

正如您提到的,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之类的其他选项