rsyncのオプションを駆使すれば、ただ同期するだけでなく、アップロードされたファイルを別サーバーへ転送してからコピー元を削除するなど、いろんなことができます。
僕が実際同期以外でつかっているのは「--remove-source-files」と「--files-from=FILE」ですね。これで特定のファイルリストを作って別サーバーに転送し、転送後に削除を一連のながれでやってくれます。
| 略称 | オプション名 | 効果 |
|---|---|---|
| -v | --verbose | 転送情報を詳しく表示 |
| -q | --quiet | 転送情報を表示しない |
| -c | --checksum | タイムスタンプとファイルサイズではなくチェックサムを用いて同一ファイルか否かをチェックする |
| -a | --archive | 転送元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。アーカイブモード(-rlptgoD オプションと同義) |
| -r | --recursive | ディレクトリ内を再帰的にコピーする |
| -R | --relative | 相対パス名を使う |
| -b | --backup | バックアップを作成する (デフォルトで ~ が付く) |
| --suffix=SUFFIX | バックアップのサフィックスを変更 | |
| -u | --update | 転送先にファイルが存在し、タイムスタンプが新しい場合は転送しない |
| -l | --links | シンボリックリンクを維持して転送する |
| -L | --copy-links | ファイルのようにソフトリンクを扱う |
| --copy-unsafe-links | 送信側ツリー外のリンクを転送 | |
| --safe-links | 受信側ツリー外のリンクを無視 | |
| -H | --hard-links | ハードリンクを維持する |
| -p | --perms | パーミッションを維持して転送する |
| -o | --owner | ファイル所有者を維持して転送する (rootのみ有効) |
| -g | --group | グループを維持する |
| -D | --devices | ブロックデバイスを維持する (rootのみ有効) |
| --specials | 名前付きパイプや FIFO などの特殊ファイルを転送 | |
| -t | --time | タイムスタンプを維持して転送する |
| -S | --sparse | 密度の低いファイルを効率的に扱う |
| -n | --dry-run | 実際には転送せず、転送内容の出力のみ行う |
| --list-only | 実際には転送せず、転送対象となるファイルリストの表示のみ行う | |
| -W | --whole-file | rsync アルゴリズムを使わず、ファイル全体を転送する |
| --existing | 転送先に存在しないファイルは転送対象外 | |
| --ignore-non-existing | 転送先に存在しないファイルは転送対象外 | |
| --ignore-existing | 転送先に存在しているファイルは、転送対象外 | |
| --remove-source-files | 転送に成功したファイルは転送元から削除する (ディレクトリは残る) | |
| --max-size=SIZE | 転送対象のファイルサイズ上限を指定する | |
| --min-size=SIZE | 転送対象のファイルサイズ下限を指定する | |
| -x | --one-file-system | 再帰的に実行された時にファイルシステムの境界を横断しない |
| -B | --block-size=SIZE | rsync アルゴリズムのチェックサムブロックサイズの制御(default 700) |
| -e | --rsh=COMMAND | リモートシェルを指定する |
| --rsync-path=PATH | リモートのマシーンで rsync のコピーへのパスを指定 | |
| -C | --cvs-exclude | システム間で転送したくない広範囲のファイルを除外(CVSの方法と同じ) |
| --delete | 転送元にないファイルを削除 | |
| --delete-excluded | --exclude=PATTERN オプションで除外するファイルについても、DEST にあれば削除する | |
| --partial | 転送途中のファイルを保存する(通常は転送中に同期不能になったファイルは削除される) | |
| --force | ディレクトリが空でなくても削除 | |
| --numeric-ids | ユーザとグループの id 番号を転送して、転送後にマッピング | |
| --timeout=TIME | IO タイムアウトを設定(秒) | |
| -I | --ignore-times | タイムスタンプとファイルサイズをチェックせず、すべてのファイルをアップデートする |
| --size-only | タイムスタンプのチェックをしないで、ファイルサイズのチェックだけをする | |
| -T | --temp-dir=DIR | tmp ファイルのディレクトリを指定 |
| --compare-dest=DIR | 受信側のファイルと比較するための追加ディレクトリ | |
| -z | --compress | データ転送時に圧縮を行う |
| --compress-level=NUM | 圧縮レベルを指定する | |
| --exclude=PATTERN | パターン一致するファイルを除外(例: --exclude="*.txt") | |
| --exclude-from=FILE | ファイルに記述されたパターンと一致するファイルを除外 | |
| --include=PATTERN | パターン一致するファイルを除外しない | |
| --include-from=FILE | ファイルに記述されたパターンと一致するファイルを除外しない | |
| --version | rsync のバージョンを表示する | |
| --daemon | rsync をデーモンとして走らせる | |
| --config=FILE | 別の rsyncd.conf ファイルを指定 | |
| --port=PORT | 別の rsync ポート番号を指定 | |
| --stats | 転送完了後に、統計情報を表示する | |
| --progress | 転送中のファイルの転送速度を表示する | |
| --files-from=FILE | テキストファイルに記入されたファイルリストのみを転送する(例: --files-from=list.txt) | |
| --log-format=FORMAT | ログフォーマットを指定 | |
| --password-file=FILE | ファイルからパスワードを得る | |
| -h | --human-readable | ファイルサイズのbytesをKやMで出力 |
| --bwlimit=KBPS | ファイル転送に帯域制限をかける。KBytes/sec で指定する | |
| -E | --executability | リソースフォークもコピー |
| --flags | ファイルフラグをそのまま転送する | |
| --inplace | 一時ファイルを使用せず、直接転送先ファイルへ上書きする | |
| -f | --filter=RULE | ファイルフィルタリングルールを追加する |
| -4 | IPv4を使用する | |
| -6 | IPv6を使用する | |


