답변:
rm
평소 와 같이 삭제할 수 있습니다 rm NameOfFile
.. 하드 링크의 경우 "원본 파일"과 "파일에 대한 링크"사이에는 차이가 없습니다. 동일한 파일에 대해 두 개의 이름 만 있고 이름 중 하나만 삭제해도 다른 파일은 삭제되지 않습니다.
sudo
제공 한 명령 (수퍼 유저)으로 생성 한 경우 루트로 사용 ( )해야합니다.
중복 하드 링크를 제거하는이 스크립트가 있습니다. 그러나 조심하십시오-그것은 매우 위험합니다.
#!/bin/bash
clear
echo Reduce redundant hardlinks in the current folder
echo ------------------------------------------------
echo
echo " $(basename $0) [-R]"
echo " -R means recursive"
echo
read -p "You can break by pressing Ctrl+C"
echo
ask=1
if [ a$1 == "a-R" ]; then recursive=" -R "; fi
for i in $(ls -i $recursive | awk '{print $1}' | uniq --repeated | sort);
do
echo "Inode with multiple hardlinked files: $i"
first=1
for foundfile in $(find . -xdev -inum $i);
do
if [ $first == 1 ]; then
echo " preserving the first file: $foundfile"
first=0
else
echo " deleting the redundant file: $foundfile"
#rm $foundfile
fi
done
if [ $ask == 1 ]; then
read -p "Delete all the rest of redundant hardlinks without asking? y/N "
if [ a${REPLY,,} == "ay" ]; then ask=0; fi
fi
# read -p "pause for sure"
echo
done
echo "All redundant hardlins are removed."
echo
실제로 rm
작동하지 않습니다.
[user@localhost Products]$ rm AZP/
rm: cannot remove `AZP/': Is a directory
[user@localhost Products]$ rm -r AZP/
rm: cannot remove `AZP': Not a directory
작동하는 것은 unlink AZP
입니다.
AZP/
디렉토리처럼 보이지만, rm은 재귀 플래그가없는 디렉토리에서는 작동하지 않습니다. 또한 coreutills 문서에 따르면. >>> 대부분의 시스템은 디렉토리에 대한 하드 링크를 만드는 것을 금지합니다. 허용되는 경우에는 수퍼 유저 만 그렇게 할 수 있습니다 (사이클을 만들면 다른 많은 유틸리티에 문제가 발생할 수 있으므로주의해야합니다).
AZP
는 디렉토리 (또는 다른 rm AZP/
것 때문에)를 rm
생각 하기 때문에 디렉토리 (또는 다른 것)에 대한 심볼릭 링크가 작동하지 않습니다 /
. 그러나 rm AZP
잘 작동합니다. -1
링크 만 제거하여 원본 파일을 유지하려면 링크 해제를 사용해야합니다.
unlink
이름에도 불구하고, 하드 링크 된 파일을 두 개의 개별 파일로 분리하지는 않지만 "링크되지 않은"디렉토리 항목을 제거합니다 (단, 링크 수가 1보다 크면 파일 / 콘텐츠 / 노드는 제외).
ln -n /path/to/file
이름이 지정된 파일을 작성하고file
약칭입니다ln --no-dereference /path/to/file
. 즉/path/to/file
, 심볼릭 링크 인 경우 새로 만든 하드 링크는 심볼릭 링크의 대상 대신 해당 심볼릭 링크를 가리 킵니다.