rcloneの転送でファイルをフィルターする

rcloneのルールでファイルを除外し、選択されたパスを確認して、dosya WebDAVへのコピーをドライランで確認し、意図しない同期削除を避けてバイトを検証します。

最終確認日

スクリーンショットは英語版の画面です。

rcloneのフィルターを使うと、バックアップファイル、一時フォルダー、不要な拡張子を転送から除外できます。まず選択されたパスを一覧表示し、同じルールでcopyをプレビューしてください。フィルターはクライアントのコマンドの対象を絞りますが、盗まれたdosyaの認証情報でアクセスできる範囲は制限しません。

手順図:transfer.rulesで選択されたパスを一覧表示し、同じフィルター付きコピーをプレビューして実行し、選択されたコピー先のバイトを比較します。
手順図:transfer.rulesで選択されたパスを一覧表示し、同じフィルター付きコピーをプレビューして実行し、選択されたコピー先のバイトを比較します。スクリーンショットを実物大で開く。

始める前に

この例では、./sample-sourceの内容を、dosya-webdavという名前のWebDAVリモートを通じて既存のfilter-checksフォルダーにアップロードします。report.pdf、draft.bak、tmp/cache.txt、photos/photo.jpgを含む無害なコピー元ツリーを作成し、重要なファイルがないコピー先を選んでください。

新しいリモートを設定するには、プロフィール → API(APIキー) → 新しいAPIキーでキーを作成してください。フルアクセスを選び、対象のワークスペースを選択して、制限と有効期限 → プロトコル → 選択したもののみでWebDAVを許可します。生成したdos_…キー全体を保存してください。連携 → WebDAVでHTTPSマウントURL全体をコピーします。rclone configを実行し、新しいwebdavリモート、Vendorのother、そのURL、Userとしてキーのオーナーのメールアドレスを選び、非表示のPassword入力欄にAPIキーを入力してください。設定は非公開にしてください。rcloneで難読化されたパスワードは元に戻せます。

通常のマウントには6つのコレクションが表示されます。Imagesのようなスマートビューではなく、Allを通して書き込んでください。フォルダーを起点とするキーでは、選択したフォルダーの子項目が既にルートです。以下のdosya-webdav:All/filter-checksをdosya-webdav:filter-checksに置き換えてください。先にファイルまたはrclone mkdirでコピー先を作成します。キーの権限とワークスペースのロールの両方でWebDAVと転送が許可されている必要があります。フルアクセスを選んでもロールの権限は広がりません。

手順:ファイルを除外して転送をプレビューする

  1. 2つのパスを確認する。 copyの最初の引数はコピー元、2番目はファイルのコピー先です。ダウンロードする場合は順序を逆にし、空のローカルのコピー先を選んでください。この例ではsyncを使いません。
  2. 選択されたコピー元ファイルを一覧表示する。 --excludeオプションを繰り返し指定すると、どの場所にある.bakファイルも、最上位のtmpサブツリーも除外されます:
rclone lsf ./sample-source --recursive --files-only --exclude '*.bak' --exclude '/tmp/**'

サンプルツリーからreport.pdfとphotos/photo.jpgが表示されます。draft.bakとtmp/cache.txtは表示されません。先頭の/はルールをコピー元の引数のルートに固定します。/tmp/**はphotos/tmp/cache.txtを除外しません。**はフォルダーの区切りを越えて一致しますが、*はパスの一区間内に限られます。どのプラットフォームでもパターンにはスラッシュを使ってください。意図的に--ignore-caseを追加しない限り、大文字と小文字は区別されます。

  1. 書き込まずにプレビューする。 同じフィルターをそのまま使ってください:
rclone copy ./sample-source dosya-webdav:All/filter-checks --exclude '*.bak' --exclude '/tmp/**' --dry-run -vv

予定されたパスとエラーを確認してください。ドライランはコピー先への接続や一覧表示を行うことがありますが、予定されたファイルをアップロードしません。シミュレーションの転送カウンターは、バイトが到着した証拠にはなりません。予期しないファイル名が選ばれた場合はルールを修正し、一覧表示とプレビューを繰り返してください。

  1. 確認済みのコピーを実行する。 --dry-runだけを外し、パスとルールはそのままにしてください:
rclone copy ./sample-source dosya-webdav:All/filter-checks --exclude '*.bak' --exclude '/tmp/**' --progress

シェルがワイルドカードをrcloneに渡すように、パターンを引用符で囲んでください。この例ではPOSIXシェルとPowerShellで一重引用符を使えます。Windowsコマンドプロンプトでは二重引用符を使ってください。フィルターの代わりにdosya-webdav:*.pdfを記述しないでください。

特定の種類を含める、または混在するルールを並べる

PDFだけを対象にするには、include系のオプションを単独で使ってください:

rclone lsf ./sample-source --recursive --files-only --include '*.pdf'

--includeは最後にすべてを除外するルールを暗黙に追加します。許可する種類と例外の両方が必要な場合は、--include、--exclude、--filterを混在させず、filter系のオプションだけを使ってください。コピー元ツリーの外に、次の内容のtransfer.rulesを作成します:

# Drop private and temporary material before allowing document types.
- /private/**
- *.bak
+ *.pdf
+ *.jpg
- **

ルールは上から順に適用され、最初に一致したルールが優先されます。+ *.pdfだけではそれ以外をすべて除外できないため、最後の明示的な- **が必要です。行全体の#と;のコメントに対応しています。行内コメントはパターンの一部になります。手順全体で同じファイルを使ってください:

rclone lsf ./sample-source --recursive --files-only --filter-from ./transfer.rules
rclone copy ./sample-source dosya-webdav:All/filter-checks --filter-from ./transfer.rules --dry-run -vv --dump filters
rclone copy ./sample-source dosya-webdav:All/filter-checks --filter-from ./transfer.rules --progress
rclone check ./sample-source dosya-webdav:All/filter-checks --filter-from ./transfer.rules --one-way --download

サンプルツリーでは、このルールファイルはreport.pdfとphotos/photo.jpgを選択します。check --downloadはバイトを読み取って比較し、ダウンロードの許容量を消費します。--one-wayはコピー先に余分なファイルがないことを要求せず、コピー元で選択されたファイルを確認します。終了ステータスが0で、候補一覧が期待どおりであり、バイトの確認が成功すれば、このフィルター付きコピーの結果を確認できます。0以外の場合は調査が必要です。

期待される結果と削除のリスク

確認済みのルールで選ばれたファイルだけがコピーされます。除外されたローカルファイルはコンピューターに残り、通常のcopyはコピー先だけにあるオブジェクトを削除しません。rcloneが転送を必要と判断した場合、コピー先の同名ファイルは置き換えられることがあります。dosyaは新しいファイルバージョンを書き込みますが、履歴の保持には期限があり、永続的な復元は保証されません。

コマンドをsyncに変更すると、選択範囲内のコピー先ファイルはコピー元に合わせるために削除される場合があります。通常、除外されたコピー先パスは同期による削除から保護されます。--delete-excludedはその保護を解除し、フィルターで隠したファイル自体を削除する場合があります。rclone purgeはフィルターを無視します。このテストの後片付けを簡単にするために、どちらも使わないでください。リモートで削除すると対象のファイルはゴミ箱に移動し、共有リンクは失効します。ローカルのコピー先で削除した場合はdosyaのゴミ箱から復元できません。

トラブルシューティング

何も選択されない場合。 ルートからの相対パスのスラッシュ、ファイル名の大文字と小文字、ファイル(/photos/**)ではなく誤ってフォルダー(/photos/)だけに一致していないか確認してください。--dump filters -vvには適用されたルールが表示されます。パターンの問題を調べている間は転送方向を変えないでください。

例外が無視される場合。 フィルターファイルで、より広い包含ルールの前に除外ルールを置いてください。フィルターの種類を混在させると、コマンドライン上の見た目の順序は維持されません。コマンドを1つの--filter-fromファイルに変換してください。

403、Locked、または容量制限による拒否の場合。 フィルターではロールやキーの制限、ロックされたコピー先、ブロックされた拡張子、ストレージの許容量を回避できません。WebDAVアップロードにはContent-Lengthと既存の親フォルダーが必要です。429の場合はRetry-Afterに従い、クライアントの並行数を減らしてください。ダウンロード時に複数のGET範囲ストリームを使う場合は、--transfers 1に加えて--multi-thread-streams 0も必要な場合があります。

関連ガイド

この記事は役に立ちましたか?

評価の結果を読み込んでいます…

投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。

質問と回答

このガイドの手順について質問できます。質問は確認後に公開されます。

公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。

質問を読み込んでいます…

    dosyaアカウントにサインインすると、質問を投稿できます。

    やり直す前に結果を確認

    操作をもう一度確認する必要があるときは、次の共通の確認事項をご利用ください。