linux 使用Rsync和Python时出错

xxslljrj  于 2023-08-03  发布在  Linux
关注(0)|答案(2)|浏览(117)

当我尝试在Python中使用rsync(Linux Mint)时,我得到以下错误
rsync:[sender] change_dir“home/user/my_source_folder”失败:无此文件或目录(% 2)
下面是我使用的代码

#!/bin/bash -l
import os, subprocess
from lib.eml import Eml
        

def sync_from_external_hd():
    src = "home/user/my_source_folder/"
    dst = "/home/user/backup folder"

    if os.path.exists(dst) and os.path.exists(src):
        subprocess.Popen(["rsync", "-a", f"remote_user@[ip address]:{src}", dst], stdout=subprocess.PIPE)

sync_from_external_hd()

字符串
我知道目录存在,因为我从错误中复制并粘贴目录&它打开了。我还在一个终端中尝试了rsync命令&它工作正常。另外,我已经在两个系统之间建立了SSH连接

7cjasjjr

7cjasjjr1#

这是我的错误。问题是我引用的源存在于客户端,而不是远程服务器上。我没有意识到我正在使用IP地址登录远程服务器。我对Linux还是个新手。下面是我使用的代码

#!/bin/bash -l
import os, subprocess
from lib.eml import Eml
    

def sync_from_external_hd():
    src = "home/user/my_source_folder/"
    dst = "/home/user/backup folder"

    if os.path.exists(dst) and os.path.exists(src):
        subprocess.Popen(["rsync", "-a", src, dst], stdout=subprocess.PIPE)

sync_from_external_hd()

字符串

6qqygrtg

6qqygrtg2#

你可以尝试使用一个绝对路径为这源目录代替一个相对路径.可以使用os.path.abspath()函数将相对路径转换为绝对路径。下面是带有绝对路径的代码的更新版本:

#!/bin/bash -l
import os, subprocess
from lib.eml import Eml

def sync_from_external_hd():
src = os.path.abspath("/home/user/my_source_folder/")
dst = "/home/user/backup folder"

if os.path.exists(dst) and os.path.exists(src):
    subprocess.Popen(["rsync", "-a", f"remote_user@[ip address]:{src}", 
dst], stdout=subprocess.PIPE)
sync_from_external_hd()

字符串
只要源目录路径正确并且SSH连接正确建立,此代码就应该可以正常工作。

相关问题