0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【備忘録】Python3 でのログ転送

Last updated at Posted at 2019-08-09

概要

転送するファイル名をkey、getmtimeでそのファイルのエポック秒をvalueとしdict型に押し込める。
転送先との差分を取り、足りない分を転送する。shutil.copy2により最終更新日時などの情報もコピーされる。

os.path.getmtime

ファイルのアクセス日時を取得する。

shutil.copy2

既にファイルがある場合上書き保存する。
同じファイル名でも編集でアクセス日時が異なると上書き保存してくれる。

参考:積年の「shutil.copy はメタデータをコピーしません」の回避策

以下の辞書型を転送元と先で差分をとる
key:ファイル名
item:更新日時

import os
import sys
import glob
import shutil

def log_copy(sfolder_path, dfolder_path):

    if os.path.isdir(sfolder_path):
        slist = {os.path.basename(filename): os.path.getmtime(filename) for filename in glob.glob(os.path.join(sfolder_path, "*"))}
        tlist = {os.path.basename(filename): os.path.getmtime(filename) for filename in glob.glob(os.path.join(dfolder_path, "*"))}
        diff_dict = dict(slist.items() ^ tlist.items())

        if diff_dict == 0:
            pass
        else:
            for dfile in diff_dict.keys():
                try:
                    shutil.copy2(os.path.join(s_path, channel, dfile), os.path.join(d_path, channel, dfile))
                    print("File uploaded : %s",os.path.join(s_path,channel, dfile))
                except:
                    sys.exit(1)

if __name__ == "__main__":
    log_copy(r"/var/log/squid", r"/mnt/nfs/logs")

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?