Python 子进程 usnig rsync 正在同步额外数据

问题描述 投票:0回答:1

我正在使用

watchdog
来监视文件并使用
rsync
将它们从目录中移动。 我覆盖了 on_modified 方法。 Rsync 的同步超出了应有的程度。
destinationDir = /home/pi/Desktop/destination
。 sourceFile 一次传入一个。

 /home/pi/Desktop/source/one.txt
 /home/pi/Desktop/source/two.txt
 /home/pi/Desktop/source/three.txt
 /home/pi/Desktop/source/four.txt

def check_directory(directory):
    for f in directory.iterdir():
        #updating the files so on_modified gets triggered
        f.touch()

def on_modified(event):
    move_file(event.src_path)

def move_file(sourceFile):
    args = ['rsync','-hav',sourceFile,destinationDir,'--remove-source-files']
    subprocess.call(args)

Rsync 正在工作,args 行如下。

['rsync','-hav','/home/pi/Desktop/source/one.txt','/home/pi/Desktop/destination','--remove-source-files']

它确实移动了所有文件。 但是,在发送最后一个文件后,它会同步空源目录。

source
目录永远不会通过触摸更新时间。 但 rsync 正在将目录移过来。我做错了什么。

python-3.x subprocess rsync
1个回答
0
投票

因为,

rsync
将给定路径(/home/pi/Desktop/source/one.txt)视为源文件或目录,当目录变为空时,它会处理空目录。相反,添加一个函数,例如...

import os

def move_file(sourceFile):

    # Check if the path is a file
    if os.path.isfile(sourceFile):  
        args = ['rsync', '-hav', sourceFile, destinationDir, '--remove-source-files']
        subprocess.call(args)
© www.soinside.com 2019 - 2024. All rights reserved.