コマンドラインのRsyncオプション

こんにちは、
古いNAS(劣化モード)から新しいNAS(TS-664、QTS 5.2.6.3195上で稼働)へssh経由でデータを復旧しており、rsyncを使用しています。
残念ながら、rsyncのすべてのオプションが利用できないようです。

QTSにパッケージされているrsyncのバージョンと、関連するドキュメントへのリンクをご存知の方がいれば教えていただけますか?

よろしくお願いします。
フレデリック

次のコマンドを入力してください:
rsync -version
そして
rsync -help

これで、インストールされているバージョンと利用可能なオプションが表示されます。

「いいね!」 1

「現在の」QTS/QuTSは、まともなバージョンのrsyncを搭載しているようです。

古いボックスでは何が使えますか?
私は通常 -aPv を使いますが、過去にはbusyboxやWindowsファイルシステムで苦労したことがあります。
--recursive --times --partial --progress --verbose は、ほぼすべてのrsyncバージョンに含まれており、データ移行が可能です。

[weedy@TheVault ~]$ rsync --help
rsync  version 3.0.7  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64ビットファイル、64ビットinum、64ビットタイムスタンプ、64ビットlong int、
    ソケットペアなし、ハードリンク、シンボリックリンク、IPv6、バッチファイル、インプレース、
    追加、ACL、xattrs、iconv、symtimes

rsyncには絶対的な保証はありません。これはフリーソフトウェアであり、
一定の条件下で再配布することができます。詳細はGNU General Public Licenceをご覧ください。

rsyncは、高速な差分アルゴリズムによる効率的なリモート更新が可能な
ファイル転送プログラムです。

使用方法: rsync [OPTION]... SRC [SRC]... DEST
  または   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  または   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  または   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  または   rsync [OPTION]... [USER@]HOST:SRC [DEST]
  または   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  または   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
「:」の使用はリモートシェル経由で接続し、「::」や「rsync://」の使用は
rsyncデーモンに接続し、SRCまたはDESTはモジュール名で始まる必要があります。

オプション
 -v, --verbose               詳細出力を増やす
 -q, --quiet                 エラー以外のメッセージを抑制
     --no-motd               デーモンモードのMOTDを抑制(manページの注意参照)
 -c, --checksum              タイムスタンプやサイズではなくチェックサムでスキップ
 -a, --archive               アーカイブモード; -rlptgoDと同等(-H,-A,-Xは除く)
     --no-OPTION             暗黙のOPTIONをオフにする(例: --no-D)
 -r, --recursive             ディレクトリを再帰的に処理
 -R, --relative              相対パス名を使用
     --no-implied-dirs       --relative使用時に暗黙のディレクトリを送信しない
 -b, --backup                バックアップを作成(--suffixや--backup-dir参照)
     --backup-dir=DIR        DIRを基準に階層的にバックアップ作成
     --suffix=SUFFIX         バックアップサフィックスを設定(デフォルトは~、--backup-dirなし)
 -u, --update                受信側で新しいファイルはスキップ
     --inplace               送信先ファイルをインプレースで更新(MANページ参照)
     --append                短いファイルにデータを追加
     --append-verify         --appendと同様だが、古いデータもファイルチェックサムに含む
 -d, --dirs                  ディレクトリを再帰せず転送
 -l, --links                 シンボリックリンクをリンクとしてコピー
 -L, --copy-links            シンボリックリンクを参照先ファイル/ディレクトリに変換
     --copy-unsafe-links     「unsafe」なシンボリックリンクのみ変換
     --safe-links            ソースツリー外を指すリンクは無視
 -k, --copy-dirlinks         ディレクトリへのリンクを参照先ディレクトリに変換
 -K, --keep-dirlinks         受信側のリンクされたディレクトリをディレクトリとして扱う
 -H, --hard-links            ハードリンクを保持
 -p, --perms                 パーミッションを保持
 -E, --executability         ファイルの実行属性を保持
     --chmod=CHMOD           ファイルやディレクトリのパーミッションに影響
 -A, --acls                  ACLを保持(--permsを含む)
 -X, --xattrs                拡張属性を保持
 -o, --owner                 オーナーを保持(スーパーユーザーのみ)
 -g, --group                 グループを保持
     --devices               デバイスファイルを保持(スーパーユーザーのみ)
     --specials              特殊ファイルを保持
 -D                          --devices --specialsと同じ
 -t, --times                 更新日時を保持
 -O, --omit-dir-times        ディレクトリの--timesを省略
     --super                 受信側でスーパーユーザー操作を試みる
     --fake-super            xattrsを使って特権属性を保存/復元
 -S, --sparse                スパースファイルを効率的に扱う
 -n, --dry-run               変更を加えず試行
 -W, --whole-file            ファイル全体をコピー(デルタ転送アルゴリズムなし)
 -x, --one-file-system       ファイルシステムの境界を越えない
 -B, --block-size=SIZE       固定チェックサムブロックサイズを指定
 -e, --rsh=COMMAND           使用するリモートシェルを指定
     --rsync-path=PROGRAM    リモートマシンで実行するrsyncを指定
     --existing              受信側で新規ファイル作成をスキップ
     --ignore-existing       受信側ですでに存在するファイルの更新をスキップ
     --remove-source-files   送信側で同期されたファイルを削除(ディレクトリ除く)
     --del                   --delete-duringのエイリアス
     --delete                送信先ディレクトリの不要ファイルを削除
     --delete-before         転送前に受信側で削除
     --delete-during         転送中に受信側で削除(デフォルト)
     --delete-delay          転送中に削除を検出し、転送後に削除
     --delete-after          転送後に受信側で削除
     --delete-excluded       送信先ディレクトリで除外されたファイルも削除
     --ignore-errors         I/Oエラーがあっても削除
     --force                 ディレクトリが空でなくても強制削除
     --max-delete=NUM        NUM個以上のファイルは削除しない
     --max-size=SIZE         SIZEより大きいファイルは転送しない
     --min-size=SIZE         SIZEより小さいファイルは転送しない
     --partial               部分的に転送されたファイルを保持
     --partial-dir=DIR       部分的に転送されたファイルをDIRに保存
     --delay-updates         すべての更新ファイルを転送終了時に配置
 -m, --prune-empty-dirs      空のディレクトリチェーンをファイルリストから除去
     --numeric-ids           uid/gid値をユーザー/グループ名でマッピングしない
     --timeout=SECONDS       I/Oタイムアウトを秒で設定
     --contimeout=SECONDS    デーモン接続タイムアウトを秒で設定
 -I, --ignore-times          サイズや更新日時が一致してもスキップしない
     --size-only             サイズが一致するファイルのみスキップ
     --modify-window=NUM     更新日時比較の精度を下げる
 -T, --temp-dir=DIR          一時ファイルをDIRに作成
 -y, --fuzzy                 送信先ファイルがない場合、類似ファイルを基準に探す
     --compare-dest=DIR      DIRを基準に送信先ファイルも比較
     --copy-dest=DIR         ...変更のないファイルもコピーに含める
     --link-dest=DIR         変更のないファイルはDIRにハードリンク
 -z, --compress              転送中にファイルデータを圧縮
     --compress-level=NUM    圧縮レベルを明示的に指定
     --skip-compress=LIST    LISTのサフィックスを持つファイルは圧縮しない
 -C, --cvs-exclude           CVSと同様にファイルを自動除外
 -f, --filter=RULE           ファイルフィルタールールを追加
 -F                          --filter='dir-merge /.rsync-filter'と同じ
                             繰り返し: --filter='- .rsync-filter'
     --exclude=PATTERN       PATTERNに一致するファイルを除外
     --exclude-from=FILE     FILEから除外パターンを読み込む
     --include=PATTERN       PATTERNに一致するファイルは除外しない
     --include-from=FILE     FILEから除外しないパターンを読み込む
     --files-from=FILE       FILEからソースファイル名リストを読み込む
 -0, --from0                 すべての*-from/filterファイルは0で区切る
 -s, --protect-args          スペース分割なし; ワイルドカード特殊文字のみ
     --address=ADDRESS       発信ソケットのバインドアドレス指定
     --port=PORT             ダブルコロンの代替ポート番号指定
     --sockopts=OPTIONS      カスタムTCPオプション指定
     --blocking-io           リモートシェルでブロッキングI/O使用
     --stats                 ファイル転送統計を表示
 -8, --8-bit-output          出力でハイビット文字をエスケープしない
 -h, --human-readable        数値を人間に読みやすい形式で表示
     --progress              転送中に進捗を表示
 -P                          --partial --progressと同じ
 -i, --itemize-changes       すべての更新の変更概要を出力
     --out-format=FORMAT     指定したFORMATで更新を出力
     --log-file=FILE         指定したFILEに実行内容を記録
     --log-file-format=FMT   指定したFMTで更新を記録
     --password-file=FILE    FILEからデーモンアクセスパスワードを読み込む
     --list-only             ファイルをコピーせずにリスト表示
     --bwlimit=KBPS          I/O帯域制限; 1秒あたりKB単位
     --write-batch=FILE      バッチ更新をFILEに書き込む
     --only-write-batch=FILE --write-batchと同様だが送信先は更新しない
     --read-batch=FILE       FILEからバッチ更新を読み込む
     --protocol=NUM          古いプロトコルバージョンを強制使用
     --iconv=CONVERT_SPEC    ファイル名の文字セット変換を要求
     --qnap-mode=mode        0:通常, 1:QRAID1, 2:USBコピー 3:HDコピーUSB
     --check-dest                 送信先パスが有効か確認
     --password=WORD         QNAPモードのパスワード
     --sever-mode=mode       0:通常, 1:QNAPデーモンモード
     --schedule=name         スケジュール名を指定
 -4, --ipv4                  IPv4を優先
 -6, --ipv6                  IPv6を優先
     --version               バージョン番号を表示
(-h) --help                  このヘルプを表示(-hは他のオプションなしで動作)

「rsync --daemon --help」でデーモンモードのコマンドラインオプションを確認できます。
詳細なドキュメントはrsync(1)およびrsyncd.conf(5)のmanページをご覧ください。
http://rsync.samba.org/ でアップデート、バグ報告、回答を確認できます
「いいね!」 1

迅速な返信ありがとうございます。
確かに、rsync -version を実行すると 2009年の 3.0.7 でした!
Qnap からもっと新しいバージョンが提供されていないのは、正直驚きです :-/

最新の 2025年版 3.4.1 と比べると、確かに機能が不足していますね。

それでは…

同じバージョンですね。
そして --archive もあります。他にデータを一発で移行するために何が必要ですか?

グローバルな進捗インジケーター(トンネルの終わりが見えるように)や転送速度の表示(他の転送技術と比較するためにテストしたもの)を期待していました。

しかし、それ以外は問題なく動作しています。

ああ、そうですね… --info= はありません。

新しいNASには pv がありますか?私のにはあります。

rsync -ahiPv --stats /path/to/source/ /path/to/destination/ | pv -lep

まあ、何かしらにはなりますね。

どうやらpvがありませんね… :-/

Ubuntuサーバー(Ubuntu server)の導入を検討されたことはありますか?ご要望に合うかもしれません。
ありがとうございます!

つまり、別のサーバーということですか?

ところで、なぜそのような基本的なツールがQNAP NASで利用できなかったり、最新でなかったりする理由を教えていただけますか?

私が言及していたのはUbuntu Linux Stationです。詳細はこちらをご覧ください: How to Use Ubuntu Linux Station | QNAP

ご指摘いただいた問題については、別途チームに確認します!

「いいね!」 1

こんにちは @frederic

エンジニアに確認したところ、システムのHBSは /usr/bin/rsync.hbs という別の実行ファイルを提供しています。

外部rsyncサービスを提供するためにHBSが使用するバージョンなので、こちらをご利用ください。現在ご使用中の /usr/bin/rsync は外部サービス向けではなく、後方互換性のためにのみ存在しています。

「いいね!」 1

ご意見ありがとうございます!