วิธีการเข้าถึงแฟลชไดรฟ์ usb จากเครื่องเทอร์มินัล


250

ฉันมีสิทธิ์เข้าถึงบรรทัดคำสั่งเท่านั้น
ฉันต้องการสำรองข้อมูลของฉัน (ในโฟลเดอร์ผู้ใช้) ไปยังปากกา (USB DOK)

  • ฉันจะติดตั้งแฟลชไดรฟ์ด้วยตนเองได้อย่างไร
  • สิ่งที่ควรเป็นคำสั่งคัดลอก?

คำตอบ:


348

1. ค้นหาสิ่งที่เรียกว่าไดรฟ์

คุณจะต้องรู้ว่าไดรฟ์นั้นเรียกว่าเมาต์อะไร หากต้องการทำเช่นนั้นให้ปิดหนึ่งในสิ่งต่อไปนี้ (จัดอันดับตามลำดับที่ฉันต้องการ):

lsblk
sudo blkid
sudo fdisk -l

/dev/sdb1คุณกำลังมองหาพาร์ติชันที่ควรมองสิ่งที่ต้องการ: ดิสก์ยิ่งมีตัวอักษรมากเท่าไหร่ก็ยิ่งมีโอกาสมากเท่านั้น อย่างไรก็ตามค้นหาและจดจำสิ่งที่เรียกว่า

2. สร้างจุดเมานต์ (เลือกได้)

นี้จะต้องติดตั้งลงในระบบแฟ้มที่ไหนสักแห่ง โดยปกติคุณสามารถใช้ / mnt / หากคุณขี้เกียจและไม่มีอะไรติดตั้งอยู่ที่นั่น แต่อย่างอื่นคุณจะต้องสร้างไดเรกทอรีใหม่:

sudo  mkdir /media/usb

3. เมานต์!

sudo mount /dev/sdb1 /media/usb

เมื่อคุณทำเสร็จแล้วเพิ่งปิดไฟ:

sudo umount /media/usb

คำตอบนี้มีอายุเกือบ 6 ปีและในขณะที่แกนหลักยังคงใช้งานได้สิ่งต่าง ๆfdisk -lไม่ใช่ตัวเลือกที่ใช้งานง่ายที่สุด นอกจากนี้ยังมีกลไกใหม่ในสแต็คที่สูงขึ้นสำหรับการติดตั้งอุปกรณ์ด้วยวิธีที่มีสติและมาตรฐานซึ่งอาจไม่สามารถใช้ได้

ดังนั้นฉันจึงได้เพิ่มเงาบางส่วนจากคำตอบอื่น ๆ ในขณะที่คุณกำลังอ่านเชิงอรรถนี้และคุณกำลังทำเช่นนี้ในระบบเดสก์ทอปมีแน่นอนข้อโต้แย้งสำหรับใช้udisksctlต่อคำตอบของ wecac สิ่งนี้เมานต์แบบเดียวกับที่เดสก์ท็อปทำ - สร้าง/media/$USER/deviceไดเรกทอรีของคุณเอง - แต่ฉันคิดว่ายังคงมีข้อโต้แย้งสำหรับจุดเมานท์แบบคงที่โดยเฉพาะเมื่อคุณไม่ต้องการเปลี่ยนเส้นทาง

Udisks ยังอาศัย D-Bus ดังนั้นอาจไม่สามารถใช้ได้ทุกที่


ข้อเสียเปรียบหลักของวิธีนี้คือมันเมานท์อุปกรณ์เป็นรูท หากอุปกรณ์มีรูปแบบ FAT ผู้ใช้จะไม่สามารถเขียนลงไปได้ จุด / สื่อ / $ USER / อุปกรณ์จะเหมือนกันเสมอ
eMBee

45

pmountติดตั้ง เมาท์ดิสก์ใน / media /

pmount /dev/sdb1
pumount /dev/sdb1

ไม่จำเป็นต้องใช้ sudo แทนที่ "sdb1" ด้วยพา ธ อุปกรณ์เฉพาะของคุณ สำหรับข้อมูลเพิ่มเติมดู manpage:

pmount  ("policy mount") is a wrapper around the standard mount program
which permits normal users to mount removable devices without a  match-
ing /etc/fstab entry.

pmount is invoked like this:

pmount device [ label ]

This  will  mount  device  to a directory below /media if policy is met
(see below). If label is given, the mount point will  be  /media/label,
otherwise it will be /media/device.

สิ่งนี้ใช้ได้เมื่อmountยืนยันในการติดตั้งไดรฟ์ของฉันเป็นแบบอ่านอย่างเดียว
Jonathan Landrum

12

นอกเหนือจากการใช้mountคำสั่งมาตรฐาน(ซึ่งต้องใช้รูท) คุณสามารถต่อเชื่อมไดรฟ์โดยใช้udisksและdbusกับผู้ใช้มาตรฐานของคุณ

หากต้องการทำสิ่งนี้จะมีประโยชน์ (แต่ไม่จำเป็น) เพื่อทราบบางสิ่งเกี่ยวกับไดรฟ์ก่อน:

  1. มันคืออุปกรณ์อะไร (เช่น/dev/sdb1)
  2. มันใช้ระบบไฟล์อะไร

การรู้สิ่งเหล่านี้คุณสามารถใช้คำสั่งง่าย ๆ ในการต่อเชื่อมไดรฟ์จากบรรทัดคำสั่ง

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" []

การเรียกนี้ควรสะท้อนพา ธ ที่ถูกเมาต์หากการเมาต์สำเร็จ

หากต้องการ unmount ไดรฟ์ที่เมาท์ด้วยวิธีนี้คุณสามารถเรียกใช้:

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount []

NB the <device>เป็นเพียงจุดสิ้นสุดของเส้นทางไปยังมัน ดังนั้นสำหรับตัวอย่างเช่นถ้าสิ่งที่คุณต้องการที่จะยึดที่/dev/sdb2แล้วที่คุณจะใส่ในสถานที่ของsdb2<device>


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

gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\}|.*\{)"

สิ่งนี้จะพิมพ์ออกมาดังนี้:

node /org/freedesktop/UDisks/devices {
  node /org/freedesktop/UDisks/devices/sda {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda';
    };
  };
  node /org/freedesktop/UDisks/devices/sda1 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'SYSTEM';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda1';
    };
  };
  node /org/freedesktop/UDisks/devices/sda2 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'Windows7';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda2';
    };
  };
  node /org/freedesktop/UDisks/devices/sda3 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'Recovery';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda3';
    };
  };
  node /org/freedesktop/UDisks/devices/sda4 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda4';
    };
  };
  node /org/freedesktop/UDisks/devices/sda5 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'ext4';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda5';
    };
  };
  node /org/freedesktop/UDisks/devices/sda6 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'swap';
        readonly s IdUsage = 'other';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda6';
    };
  };
  node /org/freedesktop/UDisks/devices/sda7 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'ext4';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda7';
    };
  };
  node /org/freedesktop/UDisks/devices/sdb {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sdb';
    };
  };
  node /org/freedesktop/UDisks/devices/sdb1 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'USB DRIVE';
        readonly s IdType = 'vfat';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sdb1';
    };
  };
  node /org/freedesktop/UDisks/devices/sr0 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sr0';
    };
  };
};

ผู้ที่IdUsage = 'filesystem'อาจจะติดตั้งโดยใช้คำสั่งดังกล่าว

ซึ่งหมายความว่าหากฉันต้องการเมานต์อุปกรณ์ 'USB DRIVE' ฉันจะเรียกใช้คำสั่ง

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []

คำสั่งเหล่านี้ทำงานได้โดยใช้dbusระบบการส่งข้อความเช่นเดียวกับที่ตัวNautilusจัดการไฟล์อื่นติดตั้งอัตโนมัติ ในคำสั่งเหล่านี้เรากำลังส่งวัตถุต่าง ๆ (เช่น/org/freedesktop/...ข้อความที่ขอให้พวกเขาเมานต์และเลิกเมานท์อุปกรณ์บางอย่างพวกเขาอาจหรืออาจไม่ทำเช่นนี้ขึ้นอยู่กับการอนุญาตที่ได้รับPolicyKitมา

การใช้คำสั่งที่คล้ายกันสามารถควบคุมได้เกือบทุกแง่มุมของประสบการณ์ในอูบุนตูและจำลองโปรแกรมระบบและฟังก์ชั่นส่วนใหญ่ (เช่นปิดเครื่องเปลี่ยนระดับเสียง ฯลฯ )


1
วิธีคือปี 2015gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Nick Alexander

12

ใช้udisksctlจาก package = udisks2(ทั้งใน Ubuntu และ Debian) ขั้นตอนคือ:

  1. ค้นหา ID ของอุปกรณ์บล็อกที่คุณต้องการติดตั้งโดยใช้lsblk:

    user@machine:~$ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   1.8T  0 disk
    ├─sda1   8:1    0  19.1M  0 part /boot/efi
    ├─sda2   8:2    0   1.8T  0 part
    └─sda3   8:3    0    16G  0 part [SWAP]
    sdb      8:16   0 931.5G  0 disk
    ├─sdb1   8:17   0    37M  0 part
    ├─sdb2   8:18   0  15.9G  0 part [SWAP]
    └─sdb3   8:19   0 915.7G  0 part /
    sdc      8:32   1  14.4G  0 disk
    └─sdc1   8:33   1  14.4G  0 part
    sdd      8:48   0   1.8T  0 disk
    └─sdd1   8:49   0   1.8T  0 part
    

    จากขนาดของมัน/dev/sdc1ดูเหมือนว่าจะเป็นไดรฟ์ USB ที่ฉันต้องการติดตั้ง

  2. ใช้udisksctlสำหรับเชื่อมต่ออุปกรณ์ โปรดทราบว่า-b== --block-device(เพื่อลดการพิมพ์) แต่ฉันชอบตัวเลือกแบบยาวสำหรับเอกสาร:

    user@machine:~$ udisksctl mount --block-device /dev/sdc1
    ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount ===
    Authentication is required to mount Kingston DT microDuo 3C (/dev/sdc1)
    Multiple identities can be used for authentication:
     1.  XXXXX,,, (user)
     2.  ,,, (YYYYY)
    Choose identity to authenticate as (1-2): 1
    Password:
    ==== AUTHENTICATION COMPLETE ===
    Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
    

Addressing ฮันส์ Deragon ของความคิดเห็นด้านล่าง : คุณยังสามารถบอกได้จะทำอย่างไรudisksctl --no-user-interactionไม่ได้พยายามตรวจสอบสิทธิ์ผู้ใช้ซึ่งโดยปกติจะเป็น "ใช้งานได้":

user@machine:~$ udisksctl mount --block-device /dev/sdc1 --no-user-interaction
# possibly some complaining here about I/O charset or need to run `fsck`
Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.

อะไร--object-pathที่จะถามหา?
CMCDragonkai

5

คุณยังสามารถเชื่อมต่ออุปกรณ์ USB บน Ubuntu Server โดยอัตโนมัติด้วยความช่วยเหลือของ USB Mount

ตรวจสอบให้แน่ใจว่าคุณได้ทำการอัปเดต / อัพเกรด apt-get ก่อนเริ่มการติดตั้ง:

sudo apt-get update && sudo apt-get upgrade

ตอนนี้ติดตั้ง USBmount จากที่เก็บ:

sudo apt-get install usbmount

USB Mount ติดตั้งไดรฟ์ USB ทั้งหมดใน/media/usb*(usb0, usb1, usb2 ... )

ตอนนี้เสียบไดรฟ์ USB และรอให้ตรวจพบและติดตั้ง ตราบเท่าที่โฮสต์ระบบปฏิบัติการรองรับระบบไฟล์ก็ควรจะเมานท์

ในการตรวจสอบว่าติดตั้งไดรฟ์ USB ถูกต้องคุณสามารถใช้df -hเพื่อดูไดรฟ์ที่มีอยู่ทั้งหมดและจุดเชื่อมต่อที่เกี่ยวข้อง

หากต้องการยกเลิกการต่อเชื่อมไดรฟ์คุณสามารถใช้ umount

sudo umount /media/usb0

3

ง่ายมาก เมื่อฉันต้องการใช้ไดรฟ์ usb ใน terminal ฉันทำสิ่งนี้:

สร้างโฟลเดอร์/mediaด้วย:

mkdir /media/mountDrive 

โฟลเดอร์นี้จะถูกใช้สำหรับจุดเชื่อมต่อ ใช้คำสั่งนี้:

sudo mount /dev/sdd1 /media/mountDrive 

sdd1เป็นพาร์ติชันแรกของ USB ของฉัน จากนั้นคุณสามารถนำทางไปยังโฟลเดอร์ที่คุณติดตั้งไว้แล้ว

cd /media/mountDrive

หากคุณต้องการแสดงรายการไฟล์ในไดรฟ์คุณสามารถใช้lsคำสั่ง

ในการเลิกเมานท์ไดรฟ์ที่คุณสามารถใช้ได้

sudo umount /dev/sdd1

โปรดทราบว่าในระบบของฉันไดรฟ์ usb เป็น/dev/sdd1แต่ในระบบของคุณมันอาจจะเป็นสิ่งที่แตกต่าง เพื่อค้นหาสิ่งที่มันใช้dfคำสั่งเพื่อดูดิสก์ทั้งหมดที่เชื่อมต่อในเวลาปัจจุบัน

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