Bunun eski bir konu olduğunu biliyorum, ama aynı sorunu yaşadım ve paylaşmak istedim.
İşte benim hikayem (sabırlı olun, mutlu bir son var).
Çevre:
Gentoo çekirdeği 4.12.5 Reiserflerde 64 bit
Bu nasıl olabilir?
Senkronizasyon kullanılarak paylaşılan bir klasöre sahip birkaç makinem var. Geçmişte bir noktada, ".stfolder" adlı bir dosyayı kaldırdım ve bunun yerine bu adla bir dizin oluşturdum. Belki de hata, bu işlemi başka bir makinede senkronize etmekten kaynaklanıyor olabilir.
Şimdi hatayı inceleyelim: ( Burada kök olarak çalışıyorum )
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
drw-rw---- 2 stopi syncthing 48 3 sept. 18:24 .stfolder
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
find -type f -name .stfolder
(<= no output there)
find -type f -name ".*"
./.stignore
./.stfolder
find -type f -name ".s*"
./.stignore
dosya bir hayalet gibi görünüyor ancak klasör normal yanıt veriyor (find ile)
file .*
.: directory
..: directory
.stfolder: directory
.stfolder: empty
.stignore: C source, ASCII text
file .s*
.stfolder: directory
.stignore: C source, ASCII text
Biliyorum, çok garip ...
rm -r .stfolder
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
rm .stfolder
rm: impossible de supprimer '.stfolder': Aucun fichier ou dossier de ce type
Bu hayalet dosyasını kaldıramıyorum!
Ama sonunda, bir tmpfs bağlama noktasında taşıyarak başarıyla kaldırdım
mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/
Hata hala tmpfs üzerinde olduğunu söylemeliyim, bu yüzden reiserfs ile ilgili değil:
cd /elsewhere
ls -lahd .*
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
ls -lahd .s*
ls: impossible d'accéder à '.s*': Aucun fichier ou dossier de ce type
Bu bash çıktısında görebileceğiniz gibi, dosya aynı anda mevcut ve mevcut değil. Bu Schrödinger kedi yeteneği nedeniyle , aynı ada sahip bir klasör oluşturabiliriz.
Ancak bekleyin, daha fazlası var (ve bunu açıkça görmelisiniz): aynı ada sahip başka bir dosya da oluşturabiliriz.
touch .stfolder
ls -lahdQ
total 0
drwxrwxr-x 3 root users 100 3 sept. 19:13 "."
drwxrwxrwt 18 root root 440 3 sept. 17:35 ".."
-rw-r--r-- 1 root root 0 3 sept. 19:13 ".stfolder"
-rw-r----- 1 root root 0 3 sept. 19:09 ".stfolder"
Hayalet kopyalanabilir (böylece hatayı çoğaltabilirim) veya chown, chmod, vb. Tarafından manipüle edilebilir. bu komutlar için argümanlar ... ama işe yarıyor!
Doğası gereği, bu dosya en başından beri boştu (sadece senkronizasyon için bir bayrak).
Bu yüzden bu dosyaya veri koyabileceğimi merak ettim.
Ve işte çözüm bana geldi:
vi .*
" ============================================================================
" Netrw Directory Listing (netrw v162)
" /elsewhere
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
.<200b>stfolder
Evet, bu dosyada noktadan hemen sonra görünmez bir karakter var.
Bu her şeyi açıklıyor.
Tanrıya şükür, "yankı testi >>. *" Ve kedi kullanmadım ...
.myfile
?