smbclient put 过程中的进度条

7

我正在尝试在使用smbclient put进行远程复制时显示进度条,可以使用pvdialog或任何其他选项。

smbclient-put命令运行良好:

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

但我找不到任何方法来显示复制的进度。 有人有解决方案/替代方案吗?

谢谢。

2个回答

11

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

计算出文件本地副本的总大小(例如使用 lsstatdu),然后转到目标文件的位置(如果是在同一台机器上,则使用 cd,否则使用 ssh)。发出以下命令:

watch -- du -h work_backup.tar.gz

这有点狡猾,但即使在启动相应的复制作业后,它仍然有效,并且几乎可以使用我能想象到的任何复制机制。


1
我用这个工具来监控使用smbclient下载的大文件。无法忍受那个没有反馈的get命令。谢谢 :) - Håvard Geithus
一样的情况。我现在正在测试smbclient下载速度,因为GUI速度非常慢。 - inf3rno
-- 是用来做什么的? - rodvlopes
1
这是一个常用的参数,用于指示参数列表现在已经结束。这里可能并不是真正必要的。 - bitmask

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接