Найкращий спосіб монтажу віддаленої папки


40

У мене є два RasberryPi, на яких працює debian wheezy, і я хотів би встановити папку з комп’ютера A на комп’ютер B.

Який найкращий (як і найефективніший) спосіб це зробити?

Я можу це зробити через SMB, але це стосується Windows, я думаю, що повинен бути кращий спосіб ділитися через Linux.


Відповіді:


31

Ви можете використовувати безліч речей, серед яких популярні варіанти:

  • NFS
  • Самба / CIFS
  • SSHFS

Завдяки простоті налаштування, я думаю, що їх доведеться навести в такому порядку (вгору: найпростіше)

SSHFS

Через FUSE ви можете монтувати віддалені файлові системи через ssh. Я не буду висвітлювати це, як Крістофер вже дуже добре пояснив це. Зауважте лише, що для автоматичного монтажу файлу знадобиться трохи більше роботи .

Самба

Це дозволить вам використовувати машини Windows та Unix для доступу до віддаленої папки. Якщо це для вас не велика справа, ви, мабуть, від цього не отримаєте користі. Однак легко встановити його на init (просто введіть відповідні значення у /etc/fstab, в тому числі username=<your-samba-username>,password=<your-samba-password>в стовпці параметрів.

NFS

Це дозволить вам пройти автентифікацію лише через IP (жодна річ з іменами користувачів = швидше, лише використання всередині вашої неприязної локальної мережі) або через Керберос Квитки (занадто болісно для двох малин; але корисно в корпоративних умовах).

Оскільки він підтримує режим ядра, він працюватиме швидше, ніж sshfs. Крім того, оскільки не проводиться шифрування, воно матиме кращу пропускну здатність, а у випадку з крихітним Raspberry ARM це може змінити значення.

Крім того, налаштування не так болісно, ​​просто ви довіряєте своїй мережі. Ви автомонтіруемие підтримку /etc/fstabтеж, і ви не повинні ставити конфіденційні дані (наприклад, імена користувачів і паролі), і якщо у вас є ваші імена користувачів syncrhronized ( то ж саме /etc/passwdі /etc/groupфайли) , ви можете використовувати звичайні права доступу POSIX (набір інструментів chown, chgrpа chmod).


Я використовую свій Pi як сервер NFS з дисками, в основному своїми фільмами та іншими носіями (тобто не критичними для системи матеріалами, не '/ home /' або чим-небудь подібним). NFS дозволяє мені переглядати фільм, не спершу копіюючи його на локальний диск, але при записі файлів на диск NFS я вважаю за краще використовувати rsync. Тому я змонтував свої диски NFS лише заново і записую речі на SSH (з rsync). Це також перешкоджає мені випадково перевести синхронізацію на встановлений NFS диск (що дуже неефективно).
zrajm

@zrajm як встановити диски на пі?
FutuToad

arisu:/mnt/ytra /mnt/ytra nfs soft,ro,intr 0 2
zrajm

Samba може плутати деякі програми Unix, зокрема, навколо дозволів або stat()повернень, наприклад, речі, які залежать від nlinkкількості, про яку CIFS не має поняття. SSHFS Я не сильно вражений, оскільки він запускав контекстні перемикачі на файловий сервер на високий рівень, і не підтримував необхідне блокування, яке вимагає внутрішніх програм. Отже, NFS ...
тригл

38

SSHFS чудовий. Він може монтувати віддалені каталоги в локальний каталог за допомогою програми FUSE . Команди нижче використовуються #для вказівки, що команда виконується як root, а $вказує на виконання як звичайний користувач. Оскільки програмне забезпечення FUSE потрібне, спочатку переконайтеся, що воно доступне та працює.

Одна з lsmodі grep команд, нижче, можна виявити , якщо завантажений і готовий до використання програмного забезпечення. Результат будь-якої команди вказує, що fuseце доступно.

# lsmod | grep fuse
$ grep -i fuse /lib/modules/$(uname -r)/modules.builtin

Якщо жодної команди немає результату, спробуйте завантажити модуль ядра без перезавантаження modprobeта перевірте ще раз.

# modprobe fuse
# lsmod fuse

Якщо завантаження модуля не вдалося, встановіть програмне забезпечення за допомогою apt-get.

# apt-get install fuse

Перевірте ще раз після встановлення.

# modprobe fuse
# lsmod fuse

Перед продовженням FUSE повинен бути встановлений і запущений.


Перевірте дозволи на /dev/fuse. Дозволи повинні надавати вашому звичайному обліковому запису користувача доступ для читання і запису Пропустіть цю частину, якщо ви визначили, що ваш звичайний обліковий запис користувача вже має дозвіл на читання та запис /dev/fuse.

# ls -l /dev/fuse

Вихід може бути чимось подібним.

crw-rw-rw- 1 root root (all users can read/write)
crw------- 1 root fuse (only root can read/write)
crw-rw---- 1 root fuse (root and members of fuse group can read/write)

У 2013 році мій Debian створений /dev/fuseз 0600правами доступу, власника root, власника групи fuse. Мені потрібно було дозволити групі запобіжників використовувати пристрій і додати свій звичайний обліковий запис користувача до групи, як показано нижче.

# usermod -aG fuse $your_regular_user_account
# chmod 0660 /dev/fuse

Якщо потрібне нове членство в групі, вийдіть із системи та знову ввійдіть, щоб стати членом групи.


Далі встановіть sshз обох сторін наступним чином.

# apt-get install ssh

Цей відповідь була написана для Debian, але на Ubuntu 18.x , по крайней мере, openssh-client, fuse, і кілька інших пакетів є частиною Ubuntu sshfsпакета. Програмне sshfsзабезпечення потрібно на стороні клієнта, але за бажанням його можна встановити з обох сторін. Одна із залежностей пакета є fuse, але інсталятор пропускає програмне забезпечення, яке вже було встановлено.

# Ubuntu 18.x: 
# apt-get install sshfs

За допомогою fuseта sshдоступного та з дозволу на використання пристрою /dev/fuseстворити точку монтування віддаленої файлової системи; і встановити локальну віддалену файлову систему таким чином.

# mkdir /mnt/$directory_name
# chown $your_user:$group /mnt/$directory_name/
$ sshfs $remote_username@$remote_server_name: /mnt/$directory_name/

Щоб змонтувати інший каталог, ніж домашній, вкажіть його після двокрапки.

$ sshfs $remote_username@$remote_server_name:/remote/directory /mnt/$directory_name

Щоб відключити, використовуйте fusermount.

fusermount -u /mnt/$directory_name

Якщо у вас є машина Windows, вона також може використовувати SSHFS з win-sshfs . Це програмне забезпечення "відобразить накопичувач" за допомогою SSHFS, щоб ви могли мати літер диска Windows, який містить віддалений каталог.


1
Ви можете значно підвищити швидкість роботи SSHFS, скориставшись додатковими опціями. Дивіться цю статтю для отримання додаткової інформації та порівняння швидкості з NFS: admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS
blendenzo

Гей - я намагався використовувати ваші вказівки (підлаштовуючись yum install fuse-sshfs.x86_64), але коли я modprobe fuseце зробив, це не створило для мене групу запобіжників. Так що, коли я зробив usermod -a -G fuse [your-user], я отримав usermod: group 'fuse' does not exist. ви можете допомогти? заздалегідь
дякую

lsmod | grep fuseповертає результат, і я маю /dev/fuse, m, який належить root. тож ти кажеш, що я гаразд без групи?
амфібій

так, я отримуюcrw-rw-rw-. 1 root root 10, 229 Nov 21 15:32 /dev/fuse
амфібій

Після # apt-get install fuse-utils sshfs я отримую "Не вдається знайти пакет fuse-utils". Будь-яка ідея чому? (Ubuntu 18.04.01)
Квоте

7

У Linux ви б обрали для NFS (також ознайомтеся зі статтею про archwiki про нього, яка може мати відповідну інформацію для вашого розповсюдження). Він має більш досконалі функції, ніж самба. Якщо вам потрібно заблокувати файли (тобто паралельні доступи), вам слід також заглянути в lockd, оскільки nfs не має статусу. Однак це важче налаштувати, ніж smb. Я б запропонував спробувати як самбу, так і nfs, щоб побачити, який з них відповідає вашим потребам.


1

У минулому я використовував як мережевий накопичувач SFTP, так і ExpanDrive, і я можу вам сказати, що sshfs перевершує обидва без запитання.

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