rsyncを使用して、自宅のコンピュータからサーバーにファイルを移動します。 grep + globを含むファイルのみのディレクトリを転送して更新するコマンドです。このコマンドは、以下に示すディレクトリ構造のtoplevel/
ディレクトリから実行します。Rsync include/excludeがpythonサブプロセスで動作しない
rsync -r --progress --include='**201609*/***' --exclude='*' -avzh files/ [email protected]:/user/files
ここに私の自宅のファイル上の作業ディレクトリのファイル構造は次のようになります。
- toplevel
- items
- files
- 20160315
- 20160910
- dir1
- really_cool_file1
- 20160911
- dir2
これは正常に動作し、[email protected]:/user/files
上のファイル構造は、私の自宅のコンピュータ上と同じです。
これを行うためのPythonスクリプトを書きましたが、機能しません。 files/20160315
も転送されますが、これは私が望むものではありません。
#!/usr/bin/env python3
import os
from subprocess import run
os.chdir("toplevel")
command_run = ["rsync", "-r",
"--progress",
"--include='**201609*/***'",
"--exclude='*'",
"-avzh",
"files/", "[email protected]:/user/files"]
run(command_run, shell=False, check=True)
ここでは何が起こっていますか? command_run
が文字列だったのと同じ問題がありました。subprocess.run()
にshell=True
で渡しました。
引用符は、シェル、ないrsyncのためのもので、コマンドラインで実行しているように見えるために必要なものを教えてくれます。 –
ええ、一重引用符は削除されます。例えば '--include = ** 201609 */***" 'と試してください。 – tdelaney