ฉันรู้ว่านี่เป็นหัวข้อเก่า แต่ฉันเพิ่งมีปัญหาเดียวกันและฉันต้องการแบ่งปัน
นี่คือเรื่องราวของฉัน (อดทนรอมันจบลงอย่างมีความสุข)
สภาพแวดล้อม:
Gentoo เคอร์เนล 4.12.5 64 บิตในการใช้ซ้ำ
สิ่งนี้จะเกิดขึ้นได้อย่างไร
ฉันมีเครื่องหลายเครื่องที่มีโฟลเดอร์แชร์โดยใช้ syncthing ในบางจุดที่ผ่านมาฉันได้ลบไฟล์ชื่อ ".stfolder" และสร้างไดเรกทอรีด้วยชื่อนั้นแทน ดังนั้นข้อผิดพลาดอาจเกิดจากการประสานการประสานการดำเนินการนี้กับเครื่องอื่น
ตอนนี้เรามาตรวจสอบข้อผิดพลาด: (ฉันทำงานเป็นrootที่นี่)
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
ดูเหมือนว่าไฟล์เป็นผี แต่โฟลเดอร์จะตอบรับตามปกติ (พร้อมค้นหา)
file .*
.: directory
..: directory
.stfolder: directory
.stfolder: empty
.stignore: C source, ASCII text
file .s*
.stfolder: directory
.stignore: C source, ASCII text
ฉันรู้ว่าแปลกมาก ...
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
ฉันไม่สามารถลบไฟล์ผีได้!
แต่ในที่สุดฉันก็ประสบความสำเร็จในการลบมันโดยการเคลื่อนย้ายมันไปยังจุดต่อ tmpfs
mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/
ฉันต้องบอกว่าข้อผิดพลาดยังคงอยู่ใน tmpfs ดังนั้นจึงไม่เกี่ยวข้องกับ reiserfs:
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
ดังที่คุณเห็นในเอาต์พุต bash นี้ไฟล์มีอยู่และไม่ปรากฏในเวลาเดียวกัน เนื่องจากความสามารถของแมวSchrödingerนี้เราจึงสามารถสร้างโฟลเดอร์ที่มีชื่อเดียวกัน
แต่เดี๋ยวก่อนมีอีกมาก (และคุณควรจะเห็นได้ชัด): เราสามารถสร้างไฟล์ใหม่ด้วยชื่อเดียวกันได้
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"
สามารถคัดลอกผี (ดังนั้นฉันสามารถทำซ้ำข้อบกพร่อง) หรือจัดการโดย chown, chmod ฯลฯ ข้อ จำกัด เพียงอย่างเดียวคือคุณไม่สามารถตั้งชื่อได้ดังนั้นคุณต้องใส่มันไว้ในไดเรกทอรีว่างและใช้ ". *" เป็น ข้อโต้แย้งสำหรับคำสั่งเหล่านั้น ... แต่มันใช้งานได้!
เนื่องจากลักษณะของมันไฟล์นี้จึงว่างเปล่าจากจุดเริ่มต้น (เป็นเพียงการตั้งค่าสถานะสำหรับการซิงค์)
ดังนั้นฉันอยากรู้ว่าฉันจะใส่ข้อมูลลงในไฟล์นั้นได้ไหม
และที่นี่การแก้ปัญหามาหาฉัน:
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
ใช่มีตัวอักษรที่มองไม่เห็นในไฟล์นั้นอยู่หลังจุด
สิ่งนี้จะอธิบายทุกอย่าง
ขอบคุณพระเจ้าฉันไม่ได้ใช้ "echo test >>. *" และแมว ...
.myfile
?