Я понимаю, что каждый файл — это жесткая ссылка. Именно это я и имею в виду: если на инод ссылается более одного файла, как можно скопировать инод так, чтобы каждый файл ссылался на отдельный инод с тем же содержимым?
Например:
echo "Example" > one
ln one two
Как мне сделать так, чтобы файл two
имел то же содержимое, что и one
, без совместного использования inode? Я хотел бы "дублировать", если хотите, файлы.
решение1
Это можно сделать с помощью команды
find -samefile filename -exec sed -i ';;' {} \;
или если вы знаете номер инода файла
find -inum inode -exec sed -i ';;' {} \;
Обратите внимание, что обе эти команды находят только файлы с соответствующими инодами в подкаталогах текущего рабочего каталога. Если вам нужно выполнить поиск по всем файлам в вашей файловой системе, вам нужно будет запустить эту команду из корневого каталога.
Первая часть find -samefile filename
находит все файлы, которые разделяют один и тот же inode. Затем выполняется , sed -i ';;'
который копирует файл в файл с тем же именем (обратите внимание, что мы используем скрипт sed ';;'
вместо ';'
, в противном случае find
аргумент будет интерпретироваться ;
как конец команды -exec
).