0

我正在尝试用 python 实现 rsync。这是我的代码。

#!/usr/bin/python

import os

url = raw_input("Paste your URL:")
username = raw_input("Enter username:")
#password = raw_input("Enter password:")

source = username + "@" + url
#print source

print os.system('rsync -zvr --progress source /home/zurelsoft/R')

逻辑很简单:用户以正确的格式输入存储在源中的 url 和用户名。然后在 rsync 命令中使用源变量。我正在输入服务器的有效 URL 和用户名,但出现此错误:

rsync: link_stat "/home/name/source" failed: No such file or directory (2)

我究竟做错了什么?

4

2 回答 2

4

您正在传递一个静态字符串。无论用户输入什么,您总是为 rsync 提供完全相同的命令行选项。您可能希望source替换为以下值:

print os.system('rsync -zvr --progress {source} /home/zurelsoft/R'.format(source=source))

作为旁注,这可以通过以下方式做得更好subprocess

subprocess.call(['rsync','-zvr','--progress',source,'/home/zurelsoft/R'])

这可能无关紧要,但是您将通过这种方式关闭程序中的一个巨大的安全漏洞(考虑用户是否将其设置; rm -rf ~;为他们的用户名......),并且养成良好的编程习惯总是一个好主意。

于 2012-11-07T06:15:39.320 回答
0

使用 subprocess.call

subprocess.call(["rsync", "-avz", "--exclude-from", "/tmp/exclude-list.txt", source, destination])

或者如果你需要输出,

 output = subprocess.Popen(["rsync", "-avz", "--exclude-from", "/tmp/exclude-list.txt", source, destination])
于 2016-01-29T05:04:59.877 回答