はじめに
図書修復チームが Garden Atlas を新しい作業場所へ移しています。転送元には私的な草稿と一時プレビューがあり、受け取り側には失ってはいけないメモがあります。今日の版、続いて改訂版の順に、利用可能な資料集と作業一覧を完成させます。
基本的なターミナル操作に慣れている必要があります。この独立した環境には、2 つのローカルフォルダーと次版のスナップショットがあります。方向、末尾スラッシュ、試行、フィルター、正確な削除範囲を学んでから、次の実習で同じ考え方を SSH に適用します。
資料の境界をローカルで練習する
このステップでは、2 つの安全な試行を比較してから、図書資料を受け取りフォルダーにコピーします。実習全体で Terminal を使用します。ここでは SSH は不要です。
修復台では Garden Atlas を移動しています。old/collection に本文、隠し閲覧設定、実行可能な閲覧ツールがあります。old/generated に破棄可能な作業一覧があります。old/personal は私的なものです。新しい作業台には既に receiver-note.txt があり、受け取りチームの所有物として毎回の更新後も残す必要があります。revision/ に後で使う次版があります。
cd はディレクトリを変更します。ls -a は隠し項目も含め、cat は編集せずにテキストを読みます。まず受け取りチームのメモを見ます。
cd /home/labex/project/folder-move
ls -a old/collection
cat new/receiver-note.txt
メモは Received by Mira. Keep the west shelf clear. です。作業台にある古い目録は不完全です。宛先は意図的に空ではありません。
rsync は第 1 パスから第 2 パスへコピーします。-a はアーカイブモードで、ディレクトリを再帰的にコピーし、更新時刻、実行権限などの対応属性を保持します。通常の受け取りアカウントは任意の転送元所有者を保持できません。このコースはバイト列と実行権限を確認し、システム間の所有者、ACL、拡張属性は保証しません。-n はファイルを変更しない試行、-i は変更予定の項目別表示です。
引用符付きの除外規則は、全階層で末尾が .tmp の名前を除きます。引用符によって、rsync が受け取る前にシェルがパターンを展開することを防ぎます。
まず、末尾スラッシュなしで転送元のディレクトリ自体を試行します。
rsync -ani --exclude='*.tmp' old/collection new/collection/
宛先資料ディレクトリ内に余分な collection/ が提案されていないか見ます。この入れ子は閲覧ツールを誤った場所に置いてしまいます。
次に、末尾スラッシュを付けて転送元の内容を試行します。
rsync -ani --exclude='*.tmp' old/collection/ new/collection/
今度は .bindery.conf、read-book、texts/ を含むパスが new/collection/ の直下になります。rsync はディレクトリ自体を受け取るためドットファイルも含まれます。old/collection/* のようなシェルのワイルドカードでは隠し項目が省かれます。新規の通常ファイルは一般に >f+++++++++、他の印は属性変更を表します。試行の行は提案であり、資料が渡された証拠ではありません。
n だけを外して、選んだ転送を実行します。
rsync -ai --exclude='*.tmp' old/collection/ new/collection/
new/collection/read-book
閲覧ツールは reading_order=catalog,treatment、続いて Garden Atlas の目録と紙ヒンジの処置を表示します。直接実行により、コピー後も相対パスの本文と隠し設定が使えるとわかります。実行を拒否されたら ls -l で転送元と宛先のモードを確認し、準備済み転送元からアーカイブモードで再実行します。ツールを固定出力に置き換えないでください。
誤って入れ子のコピーを実行した場合は、ls new/collection/collection で確認してから、rm -r new/collection/collection でその重複だけを削除します。rm -r は指定ディレクトリと内容を永久に削除します。受け取りメモもある new まで削除範囲を短縮しないでください。その後、正しい転送を再実行します。
メモを削除せず作業一覧を渡す
このステップでは、独立した生成一覧をコピーして最初の引き渡しを完了します。/home/labex/project/folder-move の Terminal に留まってください。
資料集と生成ファイルでは管理責任が異なります。転送元は generated/ 内の全ファイルを管理し、受け取り側はルートのメモを所有します。personal/ まで漏らす old/ 全体のコピーではなく、もう 1 つの管理対象ディレクトリだけを選びます。
rsync -ani old/generated/ new/generated/
rsync -ai old/generated/ new/generated/
cat new/generated/current.txt
cat new/receiver-note.txt
一覧は Garden Atlas | desk edition 1 です。古い一覧は、この時点では意図的に初版の一部です。受け取りメモは変わっていません。渡した閲覧ツールをもう一度実行します。
new/collection/read-book
ここまで --delete は不要でした。rsync は既定で宛先だけのファイルを残します。除外は転送を防ぎますが、既に宛先にある一時ファイルは削除しません。プレビューを誤ってコピーした場合は、確認してから rm new/collection/preview.tmp などで該当ファイルだけを消し、フィルター付き同期をやり直します。検証を通すために受け取りルートを空にしないでください。
管理範囲内で次版を適用する
このステップでは、第 2 版を渡し、古い生成一覧だけを廃止します。同じ作業場所の Terminal に留まってください。
cat は複数のファイル名を受け取り、指定順に表示します。編集可能な転送元を置き換える前に、提供された次版を読みます。
cat revision/collection/texts/catalog.txt revision/collection/texts/treatment.txt revision/collection/texts/addendum.txt
目録は 48 葉となり、処置方法はリネンのヒンジに変わり、補遺も追加されています。cp -a はファイル属性を保って再帰的にコピーします。revision/. は隠しファイルを含む全内容を意味します。提供された変更を old/ に重ねますが、改訂版にない古い項目は削除しません。作業台は old/generated/obsolete.txt を明示的に廃止するため、この名前の転送元ファイルだけを削除します。rm はファイルを永久に削除します。パスを広げないでください。
cp -a revision/. old/
rm old/generated/obsolete.txt
通常 rsync はサイズと更新時刻からデータの変更を判断します。-c は内容のチェックサム比較を追加します。小さいファイルなので負担は小さく、時刻が保持された同じサイズの内容変更も検出できます。版の履歴やバックアップは作りません。資料の更新を試行してから実行します。
rsync -anci --exclude='*.tmp' old/collection/ new/collection/
rsync -aci --exclude='*.tmp' old/collection/ new/collection/
資料の試行には、改訂された 2 件の本文と新しい補遺が現れ、一時プレビューは含まれないはずです。属性だけの変更が現れる場合もあります。
--delete は、転送元に存在しない宛先項目を選択した同期ディレクトリ内で削除します。ここでは generated/ だけが完全な管理対象で、受け取りルートは違います。廃止を試行し、*deleting obsolete.txt を確認して、まったく同じ範囲に適用します。
rsync -anci --delete old/generated/ new/generated/
rsync -aci --delete old/generated/ new/generated/
cat new/generated/current.txt new/collection/texts/addendum.txt new/receiver-note.txt
new/collection/read-book
作業一覧の第 2 版、新しい資料、元の受け取りメモ、更新後の閲覧ツール出力が読めるはずです。ルート全体を --delete でミラー化するとメモを消す可能性があります。この 1 件の管理対象一覧を廃止するために使わないでください。
同じ試行を繰り返します。
rsync -anci --exclude='*.tmp' old/collection/ new/collection/
rsync -anci --delete old/generated/ new/generated/
残るファイル変更はないはずです。宣言された範囲内では繰り返しが安全ですが、今後転送元から削除する際も、どの宛先ディレクトリが管理対象かを意識的に判断する必要があります。rsync だけでは初版を復元できません。履歴が必要なら別途バックアップを用意してください。
まとめ
利用可能な資料集を渡し、隠し設定と閲覧ツールの権限、受け取り側のメモを保持しました。2 回目の同期では管理対象のファイルを更新し、指定範囲内だけで廃止済みの一覧を削除しました。同期には方向があり、履歴付きバックアップや競合のマージではありません。



