/var/lib/jenkins/jobs
リモートコンピュータにjenkinsがあり、パイプラインスクリプトがパスに.xml形式のファイルとして保存されています。以下を使用して、そのフォルダの.xmlファイルを簡単に一覧表示できます。
find /var/lib/jenkins/jobs -name config.xml
結果:
/var/lib/jenkins/jobs/productA/config.xml
/var/lib/jenkins/jobs/productB/config.xml
/var/lib/jenkins/jobs/productC/config.xml
/var/lib/jenkins/jobs/productD/config.xml
/var/lib/jenkins/jobs/productE/config.xml
私のローカルコンピュータで、リモートコンピュータ上のフォルダの再帰的なコピーを作成できました(リモートファイルをローカルコンピュータに)。
scp -r [email protected]:/var/lib/jenkins/jobs/ /mnt/c/backupJenkins/
私がしたいことは質問の冒頭で説明した内容を見つけてくださいscp
。
フォーラムに非常に似た質問がありました。ただし、ローカルシステムからfindコマンドを使用してリモートで送信します。
scp --exec=`find <path> -name <expression>` user@host:<path_where_to_copy>
以下は、インターネットの調査と修正に基づいて試しましたが、うまくいかなかったいくつかのことです。
scp [email protected]:$`find /var/lib/jenkins/jobs -name config.xml` /mnt/c/backupJenkins
for f in `find /var/lib/jenkins/jobs -name config.xml` ; do
scp [email protected]/$f /mnt/c/backupJenkins
done
scp コマンドは次のとおりです。
scp [other options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]
-p
「追加オプション」では、パラメータを渡すとフォルダ構造も維持できると思います。
ベストアンサー1
単一のコマンドでは動作しませんが、両方のコマンドでは動作します
コマンドA:ssh [email protected] 'cd /var/lib/jenkins/jobs; find . -name config.xml ! -path '*/backup*' | rsync -avz --files-from=- . ./backup'
'cd /var/lib/jenkins/jobs;
- リモートシステムでsshを使用した後、ディレクトリを/var/lib/jenkins/jobsに変更しました。
find . -name config.xml ! -path '*/backup*'
- その後、「/backup」フォルダパスを見つけて除外すると、rsyncが「backup」フォルダを再帰的にコピーするのを防ぎます。
rsync --files-from=- SRC/ DST/
このrsyncコマンド形式を使用してパラメータを追加します-avz
。--files-from=-
| rsync -avz --files-from=- . ./backup'
- ここで単一ダッシュ - ファイル名は、UNIXツール間の一般的な規則であるSTDINを表します。
コマンドB rsyncを使用してSSH経由でリモートサーバーからローカルサーバーにファイルをコピーし、ローカルシステムの新しいフォルダDAY-MONTH-YEAR(/mnt/c/backupJenkins/$(/bin/date)に保存します。) d-%m-%Y) )
コマンドB:rsync -avz [email protected]:/var/lib/jenkins/jobs/backup/* /mnt/c/backupJenkins/$(/bin/date +%d-%m-%Y)