Як отримати доступ до 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, тому може бути доступний не скрізь.


Основним недоліком цього методу є те, що він монтує пристрій як root. якщо пристрій відформатовано FAT, користувач не зможе записати на нього. / media / $ USER /
точка монтажу

45

Встановити pmount. Встановлює диски в / медіа /

pmount /dev/sdb1
pumount /dev/sdb1

Судо не потрібно. Замініть "sdb1" на конкретний шлях пристрою. Для отримання додаткової інформації див сторінку сторінки:

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наполягали на встановленні мого диска лише для читання.
Джонатан Ландрум

12

Окрім використання стандартної mountкоманди (для якої потрібен root), ви можете монтувати диски за допомогою 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>" []

цей виклик повинен відповідати шляху, на якому він змонтований, якщо кріплення вдалося.

Щоб відключити диски, змонтовані таким чином, ви можете запустити:

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

NB: <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.

Використовуючи подібні команди, можна контролювати майже кожен аспект досвіду роботи в Ubuntu та імітувати більшість системних програм та функцій (тобто вимкнення, зміна гучності тощо).


1
Шлях у 2015 роціgdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Нік Олександр

12

Використовуйте udisksctlз пакета = udisks2(як в Ubuntu, так і в Debian). Процедура така:

  1. Знайдіть ідентифікатор блокового пристрою, який ви хочете встановити, використовуючи 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.
    

Звертаючись до коментаря Ганса Дерагона нижче : ви також можете сказати 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 за допомогою USBmount.

Обов’язково запустіть оновлення / оновлення apt-get перед початком інсталяції:

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

Тепер встановіть USBmount із сховищ:

sudo apt-get install usbmount

USBmount монтує всі USB-накопичувачі /media/usb*(usb0, usb1, usb2 ...)

Тепер підключіть USB-накопичувач і чекайте його виявлення та встановлення. Поки хост ОС підтримує файлову систему, її слід встановити.

Щоб перевірити правильність встановлення USB-накопичувача, ви можете df -hпереглянути всі наявні накопичувачі та їхні точки монтажу

Для зняття диска ви можете використовувати umount.

sudo umount /media/usb0

3

Це просто. Коли я хочу використовувати USB-накопичувач в терміналі, я роблю це:

Створіть папку в /media:

mkdir /media/mountDrive 

Ця папка буде використовуватися для точки монтажу. Використовуйте цю команду:

sudo mount /dev/sdd1 /media/mountDrive 

sdd1це перший розділ мого USB. Тоді ви можете перейти до папки, до якої ви вже встановлені

cd /media/mountDrive

Якщо ви хочете перерахувати файли на диску, ви можете скористатися lsкомандою.

Для відключення диска, який ви можете використовувати

sudo umount /dev/sdd1

Зауважте, що в моїй системі привід usb є /dev/sdd1, але у вашій системі це може бути щось інше. Щоб дізнатися, що це за допомогою dfкоманди, щоб переглянути всі підключені диски в даний час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.