20

Fedoraで特定のコピーを作成しようとしています。

私は2つのフォルダを持っています:

  • 「webroot」: すべての Web ファイル/画像などを保持

  • 'export': SVN リポジトリからエクスポートされた何千もの PHP、CSS、JS ドキュメントを含むフォルダー。

エクスポート ディレクトリには、ルートと同じファイル/フォルダが多数含まれていますが、ルートには、エクスポートで見つからない追加のファイル/フォルダが含まれています。

次のオプションを使用して、エクスポートのすべてのコンテンツを webroot とマージしたいと思います。

  1. エクスポートのバージョンに webroot のバージョン (ライブ) の内部とは異なるコードが含まれている場合、webroot のファイルを上書きする
  2. ファイルが上書きされた場合は、ファイルのパーミッション/ユーザー/グループを保持します (エクスポート バージョンがライブ バージョンを置き換えます)
  3. あらゆる種類のコピーのプロンプト/停止はありません (つまり、冗長ではありません)。
  4. 再帰コピー - 明らかに、エクスポートで見つかったすべての*ファイル フォルダーとサブフォルダーをコピーしたい

私は cp について少し調べました - これでうまくいきますか?:

cp -pruf ./export /path/to/webroot
4

3 に答える 3

25

export場合によっては、対応するファイルがwebroot同じ内容で変更時刻が異なる場合はいつでも、不要なコピー操作を実行することになります。おそらく、以下から少し賢い動作が得られるでしょうrsync:

rsync -pr ./export /path/to/webroot

また、rsync必要に応じて、SSH 接続を介してあるホストから別のホストにファイルをコピーできます。さらに、動作を微調整するために指定できる無数のオプションがあります。詳細については、man ページを参照してください。

編集-p:権限を保持することの意味についての明確化に関して:おそらくオプションをオフにしたいでしょう。

于 2009-03-02T04:19:15.637 に答える
6
  1. -u 宛先がソースよりも古い場合、既存のファイル フォルダーを上書きします
  2. -p 許可と日付を保持します
  3. -f 冗長性をオフにします
  4. -r はコピーを再帰的にします

cpにすべての正しい引数を取得したようです

于 2009-03-02T04:17:57.247 に答える
5

の仕事のように聞こえcpioます (したがって、おそらく、GNU tar でも実行できます):

cd export
find . -print | cpio -pvdm /path/to/webroot

所有者を保持する必要がある場合は、もちろん root として実行する必要があります。-pオプションは「パス モード」で、ロケーション間のコピーを意味します。-v詳細です(ただし、インタラクティブではありません。違いがあります)。-d必要に応じてディレクトリを作成することを意味します。-m変更時間を保持することを意味します。デフォルトでは、この-uオプションを指定しないcpioと、ソース領域のファイルよりも新しいターゲット領域のファイルは上書きされません。

于 2009-03-02T04:18:31.927 に答える