mv
コマンドを使用してフォルダーの名前を180 GBに変更するのは危険ですか?
180GBのフォルダ/data
があります。
mv
コマンドを使用して、/data
フォルダの名前を/BD_FILES
に変更します。
それは安全ですか?
同じファイルシステム内にある場合、フォルダーの名前を変更しても安全です。
mount point(/data
は、私にとってはマウントポイントである可能性があるようです。mount
でこれを確認してください)の場合は、 mv /data /BD_FILES
はデータをルートパーティションに移動するので、単純なmv
です(これは意図したとおりではない可能性があります)。
ファイルシステムをアンマウントし、空になったディレクトリの名前を変更し、/etc/fstab
をこのファイルシステムの新しい場所で更新してから、名前を変更した場所にファイルシステムを再マウントする必要があります。
言い換えると、
umount /data
mv /data /BD_FILES
(/BD_FILES
がまだ存在しないと想定します。その場合、最初に邪魔にならないように移動します)/etc/fstab
を更新し、マウントポイントを/data
から/BD_FILES
に変更しますmount /BD_FILES
これには、ファイルのコピーは含まれません。ファイルシステムのマウントポイントとして機能するディレクトリの名前が変更されるだけです。
ディレクトリの名前の変更に新しいファイルシステムへの移動が含まれる場合(/data
が1つのディスク上にあり、/BD_FILES
が別のディスク上にある場合など)は、たとえば、より大きなパーティションに物を移動する場合は、元のデータをそのままにして、コピーに問題がないことを確認できるまで、データをコピーすることをお勧めします。あなたはこれを行うことができます
rsync -a /data/ /BD_FILES/
たとえば、これが何をして何をしないかについては、rsync
マニュアルを参照してください(たとえば、ハードリンクは保持されません)。
フォルダーの名前を変更したら、既存の手順(フォルダーを使用するプログラムとユーザー、バックアップなど)が名前の変更を認識していることも確認する必要があります。
ディレクトリ内のすべてのファイルの名前を変更するのではなく、/one file in /の名前を変更します。その理由は:
したがって、ファイルの数やデータの量に関係なく、ディレクトリの名前を変更するのは簡単です。
名前を変更するだけの場合(同じファイルシステムのソースとターゲット)、それは単にディレクトリエントリの名前の変更です。成功してディレクトリに新しい名前が付けられるか、失敗した場合は何も変更されません。 *。
ソースとターゲットが異なるファイルシステムにある場合、データはmv
によってコピーされる必要があります。最大ファイルサイズ、ファイル名の制限など、ファイルシステムの機能の違いが問題を引き起こす可能性があります。問題を回避するには、まずファイル(cp
、rsync
、…)をコピーし、コピーが正常に完了したら、元の場所にあるファイルを削除します。
*ただし、いくつかのコーナーケースがあります。たとえば、[〜#〜]バグ[〜#〜]man 2 rename のセクションに記載されています
他の人が言ったように、フォルダの名前を変更しても、内容に固有のリスクはありません。しかし、考慮した方がよい別の種類のリスクがあります。
元の場所を参照する既存のプロシージャ、スクリプト、ユーザー定義のショートカット、および構成は、この変更によって壊れる可能性があり、たとえば、パスがデータベースに格納されている場合、それらの更新は大きな仕事になる可能性があります。
できることの1つは、新しいディレクトリ名にシンボリックリンクを作成することですが、しばらくの間は古い名前をそのままにしておきます。これにより、この変更の影響を評価する時間が得られます。古い名前を一時的に削除して問題がないかどうかを確認し、問題がある場合は、古い名前を再作成して、更新が必要なものを把握しながら作業を続行できるようにします。
次のようなコマンドで実行できます:ln -s /data /BD_FILES
名前の変更はアトミックです。唯一の合理的なリスクは、mv
が何らかの理由ですべてをコピーすることを決定し、途中でクラッシュすることです。 GNU mv
がある場合、_mv -T
_はこのリスクを取り除きます。
_mv -T
_はmv
にフォルダ以外の場所に移動していることを伝えます。これにより、mkdir()
の実行が拒否され、フォルダを移動して何らかの理由でコピーすることにした場合に失敗します。
私は、数年前に修士論文を作成しているときに_mv -T
_からバグを揺さぶるのに関与していました。これは、あまりにも多くのEdgeケースで間違った処理を行っていました。
一方、ルートパーティションには180GBのユーザーデータがあります。あなたはおそらくこれをルートパーティションから移動したいと思うでしょう。