2016-08-22 41 views
0

我正在编写备份脚本并希望看到tar的正确进度。脚本的 主要部分:如何在shell脚本中正确设置pv大小

backup_file="root-backup-$(date +%Y.%m.%d-%H.%M.%S).tar" 
sudo -v 
sudo mount /dev/vg/root /mnt 
time sudo sh -c "cd /mnt; tar --xattrs -cf - . | pv -s $(du -sb | grep -o '[0-9]*') > /backup/${backup_file}" 

但光伏展快充进度条,然后数增加可达10%。

Upd1。脚本中固定的印刷错误。其实它的工作原理,但进度条是不正确的。

回答

0

我发现问题:$(du -sb | grep -o '[0-9]*')未在新的子外壳下调用 - 它正在调用命令替换。

所以,在运行之前sudo sh -c bash在某个当前目录下调用$(du -sb | grep -o '[0-9]*')(在我的情况下这比较小)并将结果替换为字符串。

因此pv -s具有不正确的大小并显示不正确的进度。

我决定防止替代周围的单引号标志$

time sudo sh -c "cd /mnt; tar --xattrs -cf - . | pv -s "'$'"(du -sb | grep -o '[0-9]*') > /backup/${backup_file}"

相关问题