ฉันควรจะเก็บข้อมูลที่แชร์ไว้ที่ไหนในระบบไฟล์


44

ที่ไหนในระบบไฟล์ยูนิกซ์เป็นสถานที่ทั่วไปในการบันทึกข้อมูลที่ไม่ใช่ผู้ใช้ตัวอย่างเช่นข้อมูลที่แชร์ผ่าน nfs หรือ ftp หรือการสำรองข้อมูล?

เห็นได้ชัดว่าฉันสามารถสร้างและใช้โฟลเดอร์ใดก็ได้ (เช่น / home / shared, / data หรือ / var / data) แต่ฉันสงสัยจริงๆว่ามีแนวทางปฏิบัติที่ "ดีที่สุด" หรือ "ทั่วไป" หรือไม่ ระบบแฟ้มลำดับชั้นมาตรฐานไม่ได้ระบุสถานที่สำหรับข้อมูลที่ใช้ร่วมกัน

สำหรับการสำรองข้อมูลฉันมักจะใช้ / var / backups แต่หลาย cronjobs เขียนถึงมันควรจะเหลือไว้สำหรับการใช้งานของพวกเขา?

คำตอบ:


29

คำถามนี้ไม่ได้ดูเหมือนจะมีคำตอบที่ชัดเจนในระบบแฟ้มลำดับชั้นมาตรฐานซึ่งระบุ/srvว่าเป็น"ประกอบด้วยข้อมูล [วัน] เว็บไซต์ที่เฉพาะเจาะจงซึ่งเป็นบริการระบบนี้" (3.16.1)

วัตถุประสงค์หลักของการระบุสิ่งนี้คือเพื่อให้ผู้ใช้สามารถค้นหาตำแหน่งของไฟล์ข้อมูลสำหรับบริการเฉพาะและเพื่อให้บริการที่ต้องการต้นไม้ต้นเดียวสำหรับข้อมูลแบบอ่านอย่างเดียวข้อมูลที่เขียนได้และสคริปต์

(ความสำคัญของฉัน)

หมายเหตุ: 'ระบบที่ให้บริการ' ไม่จำเป็นต้องอ้างถึงอินเทอร์เน็ต มันไม่จำเป็นต้องหมายถึงเครือข่ายด้วยซ้ำ มันใช้ได้กับแม้แต่ระบบที่ใช้ร่วมกัน นอกจากนี้ควรทำความเข้าใจไซต์คำและบริการในความหมายก่อนอินเทอร์เน็ต เว็บไซต์ของคุณสามารถเป็น "แผนกฟิสิกส์" หรือ "สำนักงานการเงิน"

มันจะพูดว่า:

ในระบบขนาดใหญ่จะมีประโยชน์ในการจัดโครงสร้าง / srv ตามบริบทการบริหารเช่น / srv / physics / www, / srv / compsci / cvs เป็นต้นการตั้งค่านี้จะแตกต่างจากโฮสต์ไปยังโฮสต์ ดังนั้นโปรแกรมไม่ควรพึ่งพาโครงสร้างไดเรกทอรีย่อยเฉพาะของ / srv ที่มีอยู่หรือข้อมูลจำเป็นต้องถูกเก็บไว้ใน / srv อย่างไรก็ตาม / srv ควรมีอยู่ในระบบที่ได้มาตรฐาน FHS และควรใช้เป็นตำแหน่งเริ่มต้นสำหรับข้อมูลดังกล่าว

คุณจึงควรเพิ่มเติมโครงสร้างข้อมูลของคุณในไดเรกทอรีเช่น/srv/nfs, /srv/backupและอื่น ๆ

ฉันควรจะพูดถึงว่าบางคนทำเช่นนี้อีกต่อไป แต่ไม่มีเหตุผลที่ดีว่าทำไมพวกเขาถึงไม่ทำ มาตรฐานไม่ได้ล้าสมัย

/varถูกใช้แบบดั้งเดิมสำหรับสิ่งต่าง ๆ เช่น print-spools และ log-files แต่มันยังใช้งานโดยเว็บเซิร์ฟเวอร์ Apache (บนระบบ Debian อย่างไรก็ตาม - SUSE use / srv) ดูเหมือนจะไม่สอดคล้องกันว่า/varเป็นไดเรกทอรีที่เหมาะสมสำหรับข้อมูลที่ใช้ร่วมกัน แต่ถ้าคุณตัดสินใจที่จะใช้แทนคุณจะไม่เสียใจฉันแน่ใจ

หมายเหตุด้วย: คำตอบของ Karthick นั้นไม่ผิด FHS says / srv "ควรใช้เป็นตำแหน่งเริ่มต้นสำหรับข้อมูลดังกล่าว" แต่มาตรฐานออกจากห้องพักสำหรับการตั้งค่าของคุณเองขึ้นอยู่กับวิธีที่คุณตีความข้อกำหนด


4
โปรดทราบว่า Debian (และ Red Hat) เริ่มวางไฟล์ของ Apache ไว้/var/wwwก่อนหน้า/srv/นี้เป็นส่วนหนึ่งของ FHS
mattdm

คำอธิบายที่ดีขอบคุณแม้ว่าดูเหมือนว่าคำตอบสำหรับคำถามคือ "ไม่มีมาตรฐานที่ตามมาจริง" อาจจะต้องมีบางทีบางทีมันอาจไม่สำคัญ
มิสเตอร์เบ็น

คุณควรฝ่าฝืนกฎเสมอเมื่อคุณมีเหตุผลที่ดี แต่ฉันประเมินว่ามาตรฐานนี้ได้รับการปฏิบัติอย่างพิถีพิถันในการปรับใช้ขนาดใหญ่จำนวนมาก
Stefano Palazzo

ผู้ที่ต้องการย้ายไปใช้มาตรฐานทั่วไปควรพบคำตอบที่ถูกต้องอย่างไม่ผิดเพี้ยนตาม FHS
Jeremy

13
  • ข้อมูลที่ไม่ใช่ของผู้ใช้สามารถเก็บไว้ใน/ usr / local / varเพื่อที่ว่ามันจะไม่ได้ลงเอยด้วยการแบ่งปันงานใหม่อีกครั้ง
  • สิ่งใดที่ไม่อยู่ภายใต้ ../local/ .. ได้รับอนุญาตให้จบลงด้วยการแชร์ nfs ดังนั้นหากคุณต้องการดาวน์โหลดข้อมูลจากการแชร์ nfs และให้แน่ใจว่าพวกเขาถูกเก็บไว้ในเครื่องบนฮาร์ดไดรฟ์
  • จากนั้นคุณควรเลือกเส้นทางที่มี ... / local / .. ในนั้น .... ส่วนที่เหลือขึ้นอยู่กับลักษณะของข้อมูลกับประเภทของมันมันอาจเป็น / local / var หรือ / local / tmp เป็นต้น .

ลำดับชั้นของระบบไฟล์:
ข้อความแสดงแทน

ยังได้ดูที่นี้


1
แม้ว่าสิ่งนี้จะเป็นตัวแทนของ FHS ที่มีประโยชน์ แต่ก็ยังไม่แนะนำให้ใช้ตำแหน่งมาตรฐานสำหรับแหล่งข้อมูลที่ใช้ร่วมกัน
มิสเตอร์เบ็น

สถานะ FSH นั้น: / usr สามารถแบ่งปันข้อมูลแบบอ่านอย่างเดียว นั่นหมายความว่า / usr ควรจะร่วมกันได้ระหว่างโฮสต์ต่างๆ FHS สอดคล้องและ จะต้องไม่ถูกเขียนไปยัง อืมดูเหมือนว่ามันขึ้นอยู่กับว่าจุดประสงค์ของการแบ่งปันของคุณคืออะไร
htorque

@htorque ฉันกำลังคิดที่จะอยู่ภายใต้ / var เหมาะสมที่สุดสำหรับการแชร์ไฟล์ตามที่คุณแนะนำไว้ในคำตอบ (ตอนนี้ถูกลบ) ของคุณ
มิสเตอร์เบ็น

1
ฉันลบคำตอบของฉันเนื่องจาก FHS ระบุว่า: โดยทั่วไปแล้วแอปพลิเคชันจะต้องไม่เพิ่มไดเรกทอรีไปยังระดับสูงสุดของ / var ควรเพิ่มไดเรกทอรีดังกล่าวหากพวกเขามีความหมายกว้างทั้งระบบและในการหารือกับรายการส่งจดหมาย FHS - FHS ไม่ต้องการให้คุณแบ่งปันข้อมูล (เขียนได้)! : P
htorque

ขอขอบคุณภาพรวมที่มีประโยชน์และเหมือนกับคำตอบอื่น ๆ ที่ให้บริการเอกสารจริง ๆ ว่าไม่มีคำตอบที่ชัดเจนซึ่งเป็นประโยชน์ในตัวเอง
มิสเตอร์เบ็น

5

ฉันไม่คิดว่าจะกำหนดสถานที่ใด ๆ สำหรับข้อมูลผู้ใช้ที่ใช้ร่วมกัน มันขึ้นอยู่กับผู้ใช้ที่พวกเขาต้องการจัดเก็บข้อมูลที่ใช้ร่วมกัน ผมมักจะใช้หรือ/usr/local/shared/home/shared


1

ฉันเคยเห็น/exportใช้บริการกับ nfs และ/mntเคยติดตั้ง nfs ที่ใช้ร่วมกันในพื้นที่ในสภาพแวดล้อมขององค์กรตามที่แนะนำไว้ในเอกสารประกอบของ NFS ซึ่งเป็นมาตรฐานที่ฉันสงสัยว่าเดิมมาจาก Sun OS ภายหลังเปลี่ยนชื่อเป็น Solaris

/etc/exportsชื่อไฟล์ปริมาณการส่งออกและไดเรกทอรีให้บริการให้กับผู้ใช้ระยะไกลที่ติดพวกเขาใน/exports /mntโฮสต์เซิร์ฟเวอร์อาจเมานต์แชร์เดียวกันนี้/mntโดยใช้ nfs daemon เดียวกันสำหรับการใช้งานไคลเอนต์หรือกระบวนการใด ๆ ที่ทำงานอยู่บนเซิร์ฟเวอร์เพื่อรักษาความเข้ากันได้กับโฮสต์ระยะไกลใด ๆ และอาจคงฟังก์ชันการทำงานของระดับโหลดโควต้า ฯลฯ

นั่นใกล้เคียงกับ 'มาตรฐาน' เท่าที่ได้รับ โปรดทราบว่า/exportไม่ได้อยู่ใน FHS จึงถูกบันทึกเป็นอิสระดังนั้นคงจะไม่มีใครมีความสุขกับ/export /srvอาจเป็นเพราะความสับสนที่อาจเกิดขึ้นกับ 'บริการ' ที่ทำงานเป็น daemons มากกว่า 'ปริมาณ' ที่ให้บริการ /exportถูกตั้งชื่ออย่างไม่น่าสงสัยโดยมีโอกาสสับสนเล็กน้อย ฉันไม่เคยเห็นอะไร/srvเลย

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