我有一个脚本,用于从一个位置复制到另一个位置,目录结构下的文件都是.txt文件。
此脚本仅评估源上的文件大小,并且仅在文件大小不为零字节时才进行复制。但是,我需要在cron一定时间间隔后运行此脚本以复制任何增加的数据。
因此,我需要知道如何仅复制在源文件上更新的文件内容,然后仅针对新内容更新目标,而不仅仅是在目标已存在时进行覆盖。
代码:
#!/bin/python3
import os
import glob
import shutil
import datetime
def Copy_Logs():
Info_month = datetime.datetime.now().strftime("%B")
# The result of the below glob _is_ a full path
for filename in glob.glob("/data1/logs/{0}/*/*.txt".format(Info_month)):
if os.path.getsize(filename) > 0:
if not os.path.exists("/data2/logs/" + os.path.basename(filename)):
shutil.copy(filename, "/data2/logs/")
if __name__ == '__main__':
Copy_Logs()
Run Code Online (Sandbox Code Playgroud)
我正在寻找是否有办法shutil()在rsync工作中使用,或者是否有替代我拥有的代码的方法。
简而言之,如果尚未复制文件,我只需要复制文件,然后仅在源更新时复制增量。
注: 该Info_month = datetime.datetime.now().strftime("%B")是强制性的保持,因为这决定按月名当前目录。
编辑:
只要有其他原材料的想法,如果我们可以用filecmp与shutil.copyfile模块比较的文件和目录,但我没有得到如何它放到代码。
import os
import glob
import filecmp
import shutil
import …Run Code Online (Sandbox Code Playgroud)