ブランチ内のどこかに特定のディレクトリ名を含むディレクトリ ツリーのブランチのみをミラーリングしようとしています。私は何時間もかけてさまざまなことを試みましたが、役に立ちませんでした。
リモート FTP サイトには、次のようなディレクトリ構造があります。
image_db
movies
v2
20131225
xyz
xyz.jpg
20131231
abc
abc.jpg
AllPhotos <-- this is what I want to mirror
xyz
xyz.jpg
abc
abc.jpg
v4
(similar structure to 'v2' above, contains 'AllPhotos')
...
tv_shows
(similar structure to 'movies', contains 'AllPhotos')
other
(different paths, some of which contain 'AllPhotos')
...
親パスをそのままにして、「AllPhotos」ディレクトリのみのローカルミラーを作成しようとしています。
私はこれのバリエーションを試しました:
lftp -e 'mirror --only-newer --use-pget-n=4 --verbose -X /* -I AllPhotos/ /image_db/ /var/www/html/mir_images' -u username,password ftp.example.com
...ここで、「-X /*」はすべてのディレクトリを除外し、「-I AllPhotos/」は AllPhotos のみを含めます。これは機能しません。lftp はすべてをコピーするだけです。
私もこれのバリエーションを試しました:
lftp -e 'glob -d -- mirror --only-newer --use-pget-n=4 --verbose /image_db/*/*/AllPhotos/ /var/www/html/mir_images' -u username,password ftp.example.com
...そして、lftpは、実際には何も作成せずに、リモートディレクトリ構造を処理します。
基本的に、完全なディレクトリ パスのどこかに文字列 'AllPhotos' があるファイルのみをミラーリングしたいと考えています。
更新 1:
wget、rsync、ftpcopy、または lftp 以外のその他のユーティリティでこれを実行できる場合は、代替案の提案を歓迎します。
wget を試してもうまくいきませんでした:
wget -m -q -I /image_db/*/*/AllPhotos ftp://username:password@ftp.example.com/image_db
... wget のドキュメントでは -I パスでワイルドカードを使用できると記載されていますが、ディレクトリ構造全体を取得するだけです。
更新 2:
さらに調査した結果、おそらく独自のミラーリング ユーティリティを作成する必要があるという結論に達しましたが、まだ lftp に間違った方法でアプローチしているのではないかと疑っています。絶対パス。