Làm thế nào để truy cập ổ đĩa flash USB từ thiết bị đầu cuối?


250

Tôi chỉ có quyền truy cập vào dòng lệnh.
Tôi cần sao lưu dữ liệu của mình (trên thư mục người dùng) vào bút (USB DOK).

  • Làm thế nào tôi có thể gắn ổ đĩa flash bằng tay?
  • Nên sao chép lệnh sao chép?

Câu trả lời:


348

1. Tìm những gì ổ đĩa được gọi là

Bạn sẽ cần phải biết những gì ổ đĩa được gọi để gắn kết nó. Để thực hiện điều đó, hãy loại bỏ một trong những điều sau đây (xếp theo thứ tự sở thích của tôi):

lsblk
sudo blkid
sudo fdisk -l

Bạn đang tìm kiếm một phân vùng trông giống như : /dev/sdb1. Càng nhiều đĩa bạn có chữ cái này càng cao. Dù sao, tìm nó và nhớ những gì nó được gọi.

2. Tạo một điểm gắn kết (tùy chọn)

Điều này cần phải được gắn vào hệ thống tập tin ở đâu đó . Bạn thường có thể sử dụng / mnt / nếu bạn lười biếng và không có gì khác được gắn kết ở đó nhưng nếu không, bạn sẽ muốn tạo một thư mục mới:

sudo  mkdir /media/usb

3. Núi!

sudo mount /dev/sdb1 /media/usb

Khi bạn đã hoàn tất, chỉ cần tắt:

sudo umount /media/usb

Câu trả lời này đã gần 6 năm và trong khi cốt lõi của nó vẫn hoạt động, những thứ như fdisk -lkhông phải là lựa chọn thân thiện nhất với người dùng. Ngoài ra còn có các cơ chế mới trong các ngăn xếp cao hơn để gắn các thiết bị theo cách chuẩn và lành mạnh mà không phải lúc nào cũng có sẵn.

Vì vậy, tôi đã thêm một số đánh bóng từ các câu trả lời khác. Trong khi bạn đang đọc chú thích này và bạn đang làm điều này trên một hệ thống máy tính để bàn, chắc chắn có những lý lẽ để sử dụng udisksctl, theo câu trả lời của wecac . Điều này gắn kết giống như cách máy tính để bàn thực hiện /media/$USER/devicethư mục riêng của bạn, nhưng tôi nghĩ vẫn còn đối số cho một điểm gắn kết tĩnh, đặc biệt là khi bạn không muốn đường dẫn thay đổi.

Udisks cũng dựa vào D-Bus, vì vậy có thể không có sẵn ở mọi nơi.


Nhược điểm chính của phương pháp này là nó gắn thiết bị làm root. nếu thiết bị được định dạng FAT thì người dùng sẽ không thể ghi vào thiết bị. / media / $ USER / điểm gắn thiết bị cũng sẽ luôn giống nhau
eMBee

45

Cài đặt pmount. Gắn đĩa vào / media /

pmount /dev/sdb1
pumount /dev/sdb1

Không cần sudo. Thay thế "sdb1" bằng đường dẫn thiết bị cụ thể của bạn. Để biết thêm thông tin, xem trang web:

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.

Điều này hoạt động khi mountnhấn mạnh vào việc gắn ổ đĩa của tôi chỉ đọc.
Jonathan Landrum

12

Ngoài việc sử dụng mountlệnh tiêu chuẩn (yêu cầu root), bạn có thể gắn ổ đĩa bằng cách sử dụng udisksdbusvới người dùng chuẩn của mình.

Để làm điều này, thật hữu ích (nhưng không bắt buộc) để biết một số điều về ổ đĩa trước tiên:

  1. Nó là thiết bị gì (tức là /dev/sdb1)
  2. nó sử dụng hệ thống tập tin nào.

Biết những điều này bạn có thể sử dụng một lệnh đơn giản để gắn một ổ đĩa từ dòng lệnh.

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

cuộc gọi này sẽ lặp lại đường dẫn mà nó được gắn kết nếu việc gắn kết thành công.

Để ngắt kết nối ổ đĩa được gắn theo cách này, bạn có thể chạy:

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

NB <device>chỉ đơn giản là kết thúc của con đường đến nó. Vì vậy, ví dụ nếu những gì bạn muốn gắn kết là lúc /dev/sdb2đó bạn sẽ sdb2thay thế <device>.


Nếu bạn không biết nó là thiết bị gì hoặc hệ thống tập tin nào nó sử dụng thì đừng sợ. Bạn có thể dễ dàng in ra tất cả thông tin đó bằng lệnh nhỏ này:

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) ).*|\}|.*\{)"

Điều này sẽ in ra một cái gì đó như thế này:

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';
    };
  };
};

Những người có IdUsage = 'filesystem'thể được gắn kết bằng cách sử dụng lệnh trên.

Điều này có nghĩa là, ví dụ, nếu tôi muốn gắn thiết bị 'USB DRIVE', tôi sẽ chạy lệnh

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

Các lệnh này đều hoạt động bằng cách sử dụng dbushệ thống nhắn tin, giống như cách mà Nautiluscác trình quản lý tệp khác tự động gắn kết mọi thứ. Trong các lệnh này, chúng tôi đang gửi các đối tượng khác nhau (tức là /org/freedesktop/...các tin nhắn yêu cầu chúng gắn kết và ngắt kết nối một số thiết bị nhất định. Chúng có thể hoặc không thể thực hiện việc này tùy thuộc vào quyền mà người ta đã đưa ra PolicyKit.

Sử dụng các lệnh tương tự, người ta có thể kiểm soát hầu hết mọi khía cạnh của trải nghiệm trong Ubuntu và mô phỏng hầu hết các chương trình và chức năng của hệ thống (ví dụ như tắt máy, thay đổi âm lượng, v.v.).


1
Cách 2015 làgdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Nick Alexander

12

Sử dụng udisksctltừ gói = udisks2(trong cả Ubuntu và Debian). Thủ tục là:

  1. Tìm ID của thiết bị khối bạn muốn gắn kết, sử dụng 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
    

    Từ kích thước của nó, /dev/sdc1dường như là ổ USB tôi muốn gắn.

  2. Sử dụng udisksctlđể gắn thiết bị. Lưu ý rằng -b== --block-device(để giảm việc nhập) nhưng tôi thích các tùy chọn dài hơn cho tài liệu:

    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.
    

Giải quyết bình luận của Hans Deragon bên dưới : bạn cũng có thể nói udisksctlđể làm --no-user-interaction. Nó không cố gắng xác thực người dùng, thường là "chỉ hoạt động":

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.

Là gì --object-pathmà nó yêu cầu?
CMCDragonkai

5

Bạn cũng có thể tự động gắn thiết bị USB trên Ubuntu Server với sự trợ giúp của USBmount.

Đảm bảo bạn chạy apt-get update / nâng cấp trước khi bắt đầu cài đặt:

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

Bây giờ cài đặt USBmount từ kho lưu trữ:

sudo apt-get install usbmount

USBmount gắn kết tất cả các ổ USB vào /media/usb*(usb0, usb1, usb2 ...)

Bây giờ cắm một ổ USB và chờ cho nó được phát hiện và gắn kết. Miễn là hệ điều hành máy chủ hỗ trợ Hệ thống tệp, nó sẽ được gắn kết.

Để xác minh xem ổ USB đã được gắn đúng chưa, bạn có thể sử dụng df -hđể xem tất cả các ổ đĩa có sẵn và các điểm gắn kết tương ứng của chúng

Để hủy gắn ổ đĩa, bạn có thể sử dụng umount.

sudo umount /media/usb0

3

Điều đó thật đơn giản. Khi tôi muốn sử dụng ổ USB trong thiết bị đầu cuối, tôi làm điều này:

Tạo một thư mục trong /media:

mkdir /media/mountDrive 

Thư mục này sẽ được sử dụng cho điểm gắn kết. Sử dụng lệnh này:

sudo mount /dev/sdd1 /media/mountDrive 

sdd1là phân vùng đầu tiên của USB của tôi. Sau đó, bạn có thể điều hướng đến thư mục bạn đã gắn kết với

cd /media/mountDrive

Nếu bạn muốn liệt kê các tập tin trong ổ đĩa, bạn có thể sử dụng lslệnh.

Để ngắt kết nối ổ đĩa bạn có thể sử dụng

sudo umount /dev/sdd1

Lưu ý rằng trong hệ thống của tôi, ổ USB là /dev/sdd1, nhưng trong hệ thống của bạn, nó có thể là một cái gì đó khác. Để tìm hiểu những gì nó được sử dụng dflệnh để xem tất cả các đĩa được kết nối tại thời điểm hiện tại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.