โครงสร้างโลจิคัลของระบบไฟล์ (รวมถึงเป้าหมาย symlink) สามารถแสดงในไฟล์น้ำหนักเบาเดี่ยว (ไม่ใช่ไบนารี) ได้หรือไม่?


13

หลังจากเล่นกับฐานข้อมูล SQL และ NoSQL หลายแห่งในช่วงหลายปีที่ผ่านมาฉันรู้สึกว่าวิธีที่ดีที่สุดสำหรับฉันในการพกพาในแอพส่วนบุคคลที่เป็นศูนย์ข้อมูลคือการหลีกเลี่ยงฐานข้อมูลที่ไม่ปลอดภัยทั้งหมด ฉันเห็นว่าระบบไฟล์เป็นกระบวนทัศน์ฐานข้อมูลที่สวยงามที่พกพาอ่านง่ายและมีอายุการใช้งานที่เพียงพอสำหรับประเภทของแอปพลิเคชันส่วนบุคคลที่ฉันกำลังเขียน มันเหมือนกับฐานข้อมูลกราฟที่บังคับใช้โครงสร้างต้นไม้ (ดีสำหรับการแบ่งพาร์ติชัน) โดยมี symlinks เพื่อแสดงความสัมพันธ์แบบหนึ่งต่อหนึ่ง

มีวิธีการส่งออกทอพอโลยีระบบไฟล์ทั้งหมดเป็นไฟล์เดียวหรือไม่? ผลลัพธ์ของfindคำสั่งมีแนวโน้ม แต่ไม่มีวิธีมาตรฐานในการส่งออกข้อมูลที่บ่งชี้ว่า symlink ชี้ไปที่อะไร ฉันไม่ต้องการที่จะเกิดขึ้นกับตัวเลือกfindรูปแบบผลลัพธ์ส่วนบุคคลของฉันเองเช่น:

/home/me/photos/beach/me_and_my_dog.jpg -> /home/me/photos/beach/1.jpg

หากใครบางคนเคยทำงานในการสร้างรูปแบบการส่งออกทอพอโลยีระบบไฟล์

ตัวเลือกอื่นคือไฟล์ JSON:

home : [{
    me : [{
        photos : [{
            beach : [{
                1.jpg,
                { me_and_my_dog.jpg : ./1.jpg }
            }]
        }]
    }
}]

แต่อีกครั้งมีหลายวิธีในการเป็นตัวแทนของประเภทไฟล์และฉันสงสัยว่ามีคนทำงานของการสร้างมาตรฐานแล้ว

โปรดทราบว่าฉันไม่ต้องการส่งออกเนื้อหาของไฟล์ - ซึ่งจะทำให้การส่งออกมีขนาดใหญ่เกินความต้องการ

คำตอบ:


14

ผลลัพธ์ของtreeคำสั่งดูเหมือนจะแสดงสิ่งที่คุณกำลังมองหา:

.
└── photos
    └── beach
        ├── 1.jpg -> me_and_dog.jpg
        └── me_and_dog.jpg

คำสั่งเวอร์ชันที่ใหม่กว่าจะส่งออกไปยัง HTML, XML หรือ JSON

เอาต์พุต XML:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory name=".">
    <directory name="photos">
      <directory name="beach">
        <link name="1.jpg" target="me_and_dog.jpg"></link>
        <file name="me_and_dog.jpg"></file>
      </directory>
    </directory>
  </directory>
  <report>
    <directories>2</directories>
    <files>2</files>
  </report>
</tree>

2
โอ้ว้าวนั่นคือสิ่งที่ฉันต้องการ ฉันรับรู้ถึงtreeคำสั่ง (ซึ่งยอดเยี่ยม) แต่ฉันไม่ทราบว่าตอนนี้รองรับรูปแบบการวิเคราะห์
Sridhar Sarnobat

1
หมายเหตุ: treeคำสั่งนี้เป็นเวอร์ชัน Linux เวอร์ชั่น Windows ยังคงให้ผลลัพธ์ "ต้นไม้" อย่างง่ายเท่านั้น
Cole Johnson

2

คุณสามารถใช้mtreeสิ่งนี้ ดูwww.freebsd.org/cgi/man.cgi?query=mtree&sektion=8&manpath=FreeBSD+6.3-RELEASEและcode.google.com/p/mtree-port

mtree -c

มันอเนกประสงค์มาก


นั่นไม่ใช่เอาท์พุท JSON ตามที่ฉันชอบส่วนตัว แต่ฉันแน่ใจว่าผู้ใช้ Mac จะประทับใจกับความจริงที่มันสร้างขึ้นมา
Sridhar Sarnobat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.