ZFSスナップショット名に改行文字を含めることはできますか?それでは、zfs list -t snapshotの出力をどのように解析しますか?

ZFSスナップショット名に改行文字を含めることはできますか?それでは、zfs list -t snapshotの出力をどのように解析しますか?

次の質問は次のとおりです。Linux(ZoL)/OpenZFSのZFS、Debian Buster、Debian Bullseyeで提供されています。

タイトルが示すように、ZFSスナップショット名に理論的に改行文字を含めることができるか(通常のファイル名と同じように)、そうである場合は、スクリプトがスナップショット名のリストを介して安全に作業できる方法を知りたいです。

私はそのような名前でスナップショットを作成しようとしましたが、zfsは(幸い)これを拒否しました。でも、しっかりやりたくてここに質問します。

ls背景情報:このサイトとは異なる場所では、ファイル名のリストを名前で処理するために出力を解析する方法についてよく寄せられます。答えはほとんど次のとおりです。意図しない副作用がある可能性があるため、そうしないでください。たとえば、ファイル名に改行文字が含まれている場合は、bashのワイルドカードを使用します。私はそれを見つけました(実際はいつもそうでした)。

ただし、ZFSスナップショット名の場合、ワイルドカードは存在しません。たとえば、マイボックスで次のコマンドを実行すると、アイテムが改行zfs list -H -r -o name -t snapshot rpool/vm-garakで区切られたスナップショット名のリストが表示されます。

root@cerberus ~/scripts # zfs list -H -r -o name -t snapshot rpool/vm-garak
rpool/vm-garak@Q-2021-10-03-12-09-01
rpool/vm-garak@T-2021-10-03-12-14-01
rpool/vm-garak@T-2021-10-03-12-19-01
rpool/vm-garak@Q-2021-10-03-12-24-01
rpool/vm-garak@T-2021-10-03-12-29-01
rpool/vm-garak@T-2021-10-03-12-34-01
rpool/vm-garak@Q-2021-10-03-12-39-01
rpool/vm-garak@T-2021-10-03-12-44-01
rpool/vm-garak@T-2021-10-03-12-49-01
rpool/vm-garak@H-2021-10-03-12-54-01

私はこのリストを名前で処理するいくつかのスクリプトを持っています。つまり、新しい行が新しいスナップショット名を確実に表示するという事実に基づいて、1行ずつ処理します。

スナップショットの作成を制御できる限り、不合理なスナップショット名を避けることができるので安全です。しかし、スナップショットは他の人が作成したものですが、名前に改行文字があるとどうなりますか?上記のように、このようなスナップショット名を作成することは成功しませんでしたが、スナップショット名を作成できる奇妙な方法はすべてわかりません。

最後の注意:ZFSはスナップショットを隠しディレクトリに配置し、通常のディレクトリ/ファイルのようにアクセスできるようにするため、通常のデータセット(ファイルシステム)スナップショットが含まれている限り、最終的にワイルドカードを使用する必要はありません。しかし、私の場合、ZFSはこの方法でアクセスできないZVOLからスナップショットを作成しました。

ベストアンサー1

に基づいてこのファイルZFSスナップショット名に新しい行を追加することはできません。だからIMHO、1行ずつ解析します。

Each component can only contain alphanumeric characters in addition to the following four special characters:
    Underscore (_)
    Hyphen (-)
    Colon (:)
    Period (.)
Pool names must begin with a letter, except for the following restrictions:
    The beginning sequence c[0-9] is not allowed.
    The name log is reserved.
    A name that begins with mirror, raidz, raidz1, raidz2, raidz3, or spare is not allowed because these names are reserved.
    Pool names must not contain a percent sign (%).
Dataset names must begin with an alphanumeric character.
Dataset names must not contain a percent sign (%).

私が見つけたOpenindianaの命名規則しかし、残念ながら、ウェブサイトはメンテナンス中です

おすすめ記事