Yanıtlar:
Sen ile silebilirsiniz rm
zamanki gibi: rm NameOfFile
. Sabit bağlantılarda, "orijinal dosya" ile "dosyaya bağlantı" arasında bir ayrım olmadığını unutmayın: aynı dosya için yalnızca iki adınız vardır ve adlardan yalnızca birini silmek diğerini silmez.
sudo
, sağladığınız komutla (süper kullanıcı olarak) oluşturduysanız, root olarak kullanmanız (kullanmanız ) gerekir.
Yedekli sabit bağlantıları kaldırmak için bu komut dosyası var. Ama kendine iyi bak - bu oldukça tehlikelidir.
#!/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
Aslında rm
işe yaramıyor:
[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
Ne işe yarıyor unlink AZP
?
AZP/
Bir dizine benziyor, rm özyinelemeli bayrağı olmadan dizinlerde çalışmaz. Ayrıca coreutills docs göre. >>> Çoğu sistem bir dizine bağlantı oluşturmayı yasaklar; izin verildiği yerlerde yalnızca süper kullanıcı bunu yapabilir (ve bir döngü oluşturmak diğer birçok yardımcı programa sorunlara neden olacağından dikkatli olun).
AZP
bir dizin (veya başka şeylere) sembolik link rm AZP/
olmaz iş nedeniyle rm
(çünkü onun bir dizin düşünen /
sonunda). Ancak rm AZP
sadece iyi çalışacak. -1
Yalnızca bağlantıyı kaldırmak ve böylece orijinal dosyayı saklamak istiyorsanız, bağlantıyı kaldırmanız gerekir.
unlink(1)
mu? Bu, unlink(2)
sistem çağrısı etrafındaki sığ bir sarmalayıcıdır , rm(1)
dizin olmayan tüm dosyalar için kullanılan aynı sistem çağrısıdır .
unlink
, ismine rağmen, bir hardlink'i iki ayrı dosyaya ayırmaz, ancak "unlinked" dizin girişini kaldırır (ancak link sayısı> 1 olduğu sürece, file / content / inode dosyasını değil).
ln -n /path/to/file
bir dosya oluştururfile
ve kısacaln --no-dereference /path/to/file
. Bu, eğer/path/to/file
sembolik bir link ise, yeni oluşturulan hardlink, linklink hedefi yerine bu linke işaret edecektir.