ハードリンクを通常のファイルに変換するには? [コピー]

ハードリンクを通常のファイルに変換するには? [コピー]

各ファイルがハードリンクであることを知っています。意味は次のとおりです。 1つのinodeに複数のファイルがそれを指す場合、各ファイルが同じ内容を持つ別々のinodeを指すようにそのinodeをどのように複製しますか?

たとえば、

echo "Example" > one
ln one two

inodeを共有せずにファイルのtwo内容を同じにするにはどうすればよいですか?one必要に応じてファイルを「複製」したいと思います。

答え1

これは次のコマンドで達成できます。

find -samefile filename -exec sed -i ';;' {} \;

または、ファイルのinode番号を知っている場合

find -inum inode -exec sed -i ';;' {} \;

これら2つのコマンドは、現在の作業ディレクトリのサブディレクトリで一致するinodeを持つファイルのみを検索します。ファイルシステム内のすべてのファイルを検索する必要がある場合は、ルートディレクトリでこのコマンドを実行する必要があります。

最初の部分は、find -samefile filename同じinodeを共有するすべてのファイルを探します。次に、sed -i ';;'同じ名前のファイルにファイルをコピーします(';;'代わりにsedスクリプトを使用しています';'。そうしないと、引数はコマンドの終わりとしてfind解釈されます)。;-exec

関連情報