変更されたファイルをFTP経由で開発環境に転送することになっているGitLabのCIランナーに取り組んでいます。
lftp
は、使いやすく、過度に複雑ではないため、これを行うための優れたソリューションのようです。
私はこれを使用してファイルを転送しています:
lftp -c "set ftp:ssl-allow no; open -u $USERNAME_DEV,$PASSWORD_DEV $Host_DEV; mirror -Rvpn -O $PATH_DEV --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
問題のある部分は、-Rvpn
パラメータセット、特に-n
です。これは、ファイルの変更時間をチェックすることでおそらく機能する新しいファイルのみをミラーリングすることになっています。
これで、リポジトリは正しい時刻を使用しますが、サーバーは1時間前(+1ではなくGMT + 2)であるため、新しいファイルをチェックするときにfalseが発生します。
-n
を削除することはできますが、変更された(したがって新しい)ファイルだけでなく、リポジトリ全体のクローンが作成されます。
lftp
の時間オフセットを定義して、ファイル変更日などに+1時間を追加する方法はありますか? マニュアル を確認しましたが、そのようなものは見つかりませんでした。
リンクしたマニュアルを見ると、lftp
には、リモートサイトのタイムゾーンを定義できるオプションがあります。それを設定して、lftp
が正しく補正するたびに確認することは価値があるかもしれません。
ftp:timezone(文字列)
LISTコマンドによって返されるリストの時間については、このタイムゾーンを想定してください。この設定は、GMTオフセット[+ |-] HH [:MM [:SS]]または任意の有効なTZ値(例:ヨーロッパ/モスクワまたはMSK-3MSD、M3.5.0、M10.5.0/3)にすることができます。デフォルトはGMTです。これを空の値に設定して、環境変数TZで指定されたローカルタイムゾーンを想定します。
さらに、時間を無視するスイッチがあります(--ignore-time
これにより、ファイルサイズと一部のスイッチのみに依存させることができる場合があります(--newer-than
および--older-than
)すべてのファイルが転送されるわけではない方法で設定できるように、「重要な」時間を定義します。