在阅读远程根级文件时发生Python rsync错误

在阅读远程根级文件时发生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] 
... 
+0

你可以将它设置为一个变量,并让它打印输出 – Anekdotin

+0

如何设置一个变量?我不确定你的意思 – kengcc

+0

我不认为你需要rsync的sudo,而这个os.system更直接。 – Anekdotin

这是最有可能的间距误差或小东西,我调试命令的方式是确保打印出来。 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