我正在使用rsync将文件从一个服务器传输到另一个服务器。现在我必须检查目录的大小并比较size.If目录的大小是相同的,然后rsync成功。我尝试这样做,但在路径中找到一些错误“du:无法访问”。任何人都可以告诉我该怎么做。谢谢。
以下是我的代码:
path = '/mnt/rsyncap/Monte Carlo'
size_cmd = 'ssh -l root -A '+ rh +' -i /Users/macbookpro/Development/serverkey/id_rsa du -sh %s' % path
Size = subprocess.Popen(size_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,shell= True).communicate()[0]
在上面的代码中你可以看到路径。在“Monte Carlo”之间有一个空格,因为它显示了du -sh line中的错误。所以如何处理目录名之间的空间并获取大小。如果目录名中没有空格,那么它可以正常工作。
输出:
du: cannot access `/mnt/rsyncap/Monte': No such file or directory
du: cannot access `Carlo': No such file or directory
如果有人对此有任何想法,请帮助我。
答案 0 :(得分:1)
Pass a list of arguments,而不是字符串,并正确地逃避你的道路。
self
答案 1 :(得分:0)
试试,path = '/mnt/rsyncap/Monte\ Carlo'
。