Score:1

ฉันจะรับอาร์เรย์ของฮาร์ดไดรฟ์ที่แนบอยู่ (แต่ไม่ได้ฟอร์แมต / ติดตั้ง) เรียงตามขนาดได้อย่างไร (แต่ไม่มีข้อมูลการปรับขนาดในอาร์เรย์)

ธง es

ฉันต้องการวิธีเขียนสคริปต์การเมานต์ฮาร์ดไดรฟ์ไปยังจุดเมานต์เฉพาะ หลังจากการสืบค้น ฉันพบ: https://gist.github.com/trentmswanson/9c22bb71182e982bd36f

สิ่งนี้มีไว้สำหรับ MS Azure และไม่ครอบคลุมประเภทฮาร์ดไดรฟ์เฉพาะใน AWS Infrastructureมันใช้ sdf ใน nvm ที่จำเป็น ฉันทำการเปลี่ยนแปลงเหล่านั้นและผลลัพธ์ก็ใช้ได้ ฉันมีอาร์เรย์ที่เก็บจุดเชื่อมต่อ:

# Custom Mount Points สำหรับ HDD 2 ตัวแรก
เรียงพิมพ์ -A MountPoint
MountPoint[1]="/FileMakerData"
MountPoint[2]="/FileMakerData/ข้อมูลสำรอง"

และบรรทัดที่พยายามอ่านขนาด HDD "นี้" และติดตั้งอย่างเหมาะสม:

# ทดสอบขนาดของไดรฟ์ข้อมูลเพื่อทดสอบขนาดดิสก์ที่เหมาะสม
DiskSize=$(sudo fdisk -s ${DISK})

# คำนวณจำนวน GB และรีเซ็ตตัวแปรเป็นจำนวนนั้น
ให้ DiskSize=DiskSize/1048576

echo "$DiskSize"
# ใช้ขนาดดิสก์เพื่อกำหนดประเภทของดิสก์ 
# สมมติว่าไดรฟ์สำรองข้อมูลจะไม่ต่ำกว่า 50 GB และข้อมูลจะไม่เริ่ม GT 50 GB
ถ้า [ "$DiskSize" -lt 50 ]; 
จากนั้น DiskType="ข้อมูล"
elif ["$DiskSize" -ge 50 ];
จากนั้น DiskType="สำรองข้อมูล"
ไฟ

จากนั้นฟังก์ชันจะรับจุดเชื่อมต่อจากอาร์เรย์ตามค่า

get_next_mountpoint() {
    ประเภทอุปกรณ์=${1}
    ถ้า ( ทดสอบ "$DeviceType" == "ข้อมูล" ); จากนั้น echo "${MountPoint[1]}"
    elif ( ทดสอบ "$DeviceType" == "สำรอง" ); จากนั้น echo "${MountPoint[2]}"
    อื่น
        # Echos ว่างเปล่าเพื่อให้สคริปต์รู้ว่าจะออกจากลูป
        เสียงก้อง ""
    ไฟ
}

สคริปต์มีมากขึ้น อย่างไรก็ตาม ปัญหาของกระบวนการนี้คือต้องสร้าง/ติดตั้ง HDD เข้ากับ /FileMakerData ก่อน

เมื่อฉันเมานต์ /FileMakerData/Backups จากนั้นเมานต์ /FileMakerData ฉันได้รับไดเร็กทอรีเดียวใน /FileMakerData ที่มีป้ายกำกับว่า "lost+found" มันสมเหตุสมผลแล้วที่สิ่งนี้เกิดขึ้นเนื่องจากฉันเปลี่ยนตรงกลางของโครงสร้างไดเร็กทอรี แต่ฉันไม่สามารถหาวิธีแสดงรายการฮาร์ดไดรฟ์โดยการเพิ่มขนาด เพื่อที่ว่าเมื่อสคริปต์ได้รับคำสั่งโดยพลการจากโฟลเดอร์ (เนื่องจาก AWS ติดตั้งไว้ด้านหลัง) ฉันยังสามารถเมานต์ไดรฟ์ขนาดที่ถูกต้องไปยังโฟลเดอร์ที่ถูกต้องในโฟลเดอร์ที่ถูกต้อง คำสั่ง.

รหัสปัจจุบันของฉันคือ:

# ชุดของดิสก์ที่จะละเว้นจากการแบ่งพาร์ติชันและการฟอร์แมต ใช้ท่อแยกออกจากกัน (กรณีนี้อาจทำเป็น OR ก็ได้)
บัญชีดำ="/dev/nvme0"

# รับรายการดิสก์กรองรายการที่อยู่ในรายการแล้วค้นหารายการอื่น
DEVS=($(ls -1 /dev/nvme*|egrep -v "${BLACKLIST}"|egrep "[0-9]n[0-9]$"))

ฉันพบ: https://linuxhint.com/list_disks_ubuntu/ แต่มันไม่ได้บอกวิธีรับพวกมันในอาร์เรย์อย่างง่าย และฉันไม่สามารถจัดเรียงตามขนาดด้วยคำสั่งนี้

ฉันเหนื่อย:

ls -1 /dev/nvme*|egrep -v "${BLACKLIST}"|egrep "[0-9]n[0-9]$" | เรียงลำดับ

และ

ls -1 /dev/nvme*|egrep -v "${BLACKLIST}"|egrep "[0-9]n[0-9]$" | เรียง -r

แต่ (ตามที่คาดไว้) สิ่งนี้ไม่ได้จัดเรียงตามขนาด มันเรียงตามชื่อ HDD ที่ส่งผ่าน:

/dev/nvme1n1
/dev/nvme2n1 

และ

/dev/nvme2n1
/dev/nvme1n1

ตามลำดับ. นั่นคือสิ่งที่ฉันต้องการ เรียงตามขนาด ไม่ใช่ชื่อ

googling อื่น ๆ ไม่ได้เปิดความช่วยเหลือที่มีประโยชน์มากนักสำหรับการแยกขนาดและจัดเรียงค่าหลักตามขนาด ฉันใช้การติดตั้งขั้นต่ำของ Ubuntu 18.04 เนื่องจากเป็นเว็บเซิร์ฟเวอร์ ฉันมีสิทธิ์เข้าถึง df และ fdisk และฉันกำลังพยายามติดตั้งแพ็คเกจอื่นๆ อีกมากมาย แต่จะพิจารณาว่าควรพิสูจน์ว่าง่ายกว่ามากหรือไม่

Score:1
ธง hr

ฉันไม่ค่อยเข้าใจสิ่งที่คุณพยายามทำ (หรือทำไม) แต่คุณสามารถพิจารณาใช้ lsblk ด้วย --json ตัวระบุรูปแบบเอาต์พุต ไพพ์ผลลัพธ์ไปที่ เจคิว ซึ่งคุณสามารถใช้การกรอง / การเรียงลำดับแบบกำหนดเองได้

ตัวอย่างเช่น:

$ lsblk -b --json | jq -r '
    .blockdevices[] | เลือก (.name == "sda") |
    [ .children[] | เลือก(.mountpoint == null และ .name != "sda4") ] | sort_by(.size) | .[].ชื่อ
'
sda1
sda2
Score:0
ธง cn

ฉันคิดว่าคุณต้องการ systemd.mount สำหรับสิ่งนี้. การเพิ่ม x-systemd.requires-mounts-for= ของคุณ แทง รายการสร้างหน่วยติดตั้งชั่วคราว:

#fstab(5):
/dev/loop1 /opt/mnt ext4 noauto 0 0  
/dev/loop2 /opt/mnt/data ext4 noauto,x-systemd.requires-mounts-for=/opt/mnt 0 0

ซึ่งคุณสามารถเริ่มและหยุดเป็น systemd.unit:

systemctl เริ่ม opt-mnt-data.mount

สิ่งนี้จะเมานต์ระบบไฟล์ตามลำดับที่แน่นอน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา