Как получить доступ к флешке от терминала?

250

У меня есть только доступ к командной строке.
Мне нужно сделать резервную копию моих данных (в папке пользователя) на ручку (USB DOK).

  • Как я могу установить флешку вручную?
  • Какой должна быть команда копирования?
MEM
источник

Ответы:

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, то пользователь не сможет писать на него.
точка монтирования
45

Установить pmount. Монтирует диски в / media /

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.
Sepero
источник
Это работало, когда 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.
wecac
источник
Что --object-pathон просит?
CMCDragonkai
5

Вы также можете автоматически монтировать USB-устройства на Ubuntu Server с помощью USBmount.

Убедитесь, что вы запускаете apt-get update / upgrade перед началом установки:

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
Sandro
источник
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команду, чтобы увидеть все диски, подключенные в настоящее время.

Дэвид Вейл
источник