在阅读远程根级文件时发生Python rsync错误
问题描述:
我尝试设置一个cron作业来rsync远程文件(包含根级文件)到我的本地服务器,如果我在shell中运行该命令,它的工作原理。但是,如果我在Python运行此,我进入陌生的命令未找到错误:在阅读远程根级文件时发生Python rsync错误
这如果在一个shell中运行它的工作原理:
rsync -ave ssh --rsync-path='sudo rsync' --delete [email protected]:/tmp/test2 ./test
但这Python脚本并不:
#!/usr/bin/python
from subprocess import call
....
for src_dir in backup_list:
call(["rsync", "-ave", "ssh", "--rsync-path='sudo rsync'", "--delete", src_host+src_dir, dst_dir])
它失败:
local server:$ backup.py
bash: sudo rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(226) [Receiver=3.1.0]
...
答
这是最有可能的间距误差或小东西,我调试命令的方式是确保打印出来。 OS.system是一个很好的选择,虽然子进程更好,但它更容易。我不在我的计算机上测试它,但是可以像这样设置子进程,或者使用此示例。这假设你在Linux或Mac上。
import os
cmd = ('rsync -ave --delete root' +str(src_host) + str(src_directory) + '' + str(dst_dir)) #variable you can call anytime
os.system(cmd) # actually performs the command
print x # how to test and make sure
你可以将它设置为一个变量,并让它打印输出 – Anekdotin
如何设置一个变量?我不确定你的意思 – kengcc
我不认为你需要rsync的sudo,而这个os.system更直接。 – Anekdotin