В этой статье мы будем использовать S3FS для локального монтирования облачных служб хранения на коробке CentOS или Ubuntu. Их локальное монтирование позволит нам взаимодействовать с поставщиками облачных технологий в качестве локальной файловой системы.
Мы будем охватывать трех провайдеров облачных хранилищ, а именно: AWS S3, Wasabi Hot Storage и Digital Ocean Spaces. Что делает это интересным, так это то, что все три провайдера используют один и тот же API, то есть API S3.
S3FS – это решение на основе FUSE (файловая система в пространстве пользователя), используемое для монтирования Amazon S3 или совместимых решений для хранения данных. Как уже упоминалось выше, мы можем использовать системные команды с этим диском так же, как в качестве другого жесткого диска в системе. В смонтированных файловых системах s3fs мы можем просто использовать cp,
mv и ls – основные команды Unix, аналогичные для запуска на локально подключенных дисках.
Step 1 – Обновление пакетов
Сначала мы обновим систему, чтобы у нас были самые последние пакеты. Затем мы проверим, установлен ли в вашей системе какой-либо существующий пакет s3fs или fuse. Мы удалим все существующие пакеты и установим все заново.
### CentOS and RedHat Systems ###
$ yum update
$ yum remove fuse fuse-s3fs
### Ubuntu Systems ###
$ sudo apt-get update
$ sudo apt-get remove fuse
Step 2 – Установить зависимости
После того, как вы успешно удалили пакеты. Мы установим все зависимости для предохранителя. Установите необходимые пакеты в систему, используя следующую команду.
### CentOS and RedHat Systems ###
yum install gcc libstdc++-devel gcc-c++ curl-devel libxml2-devel openssl-devel mailcap
### Ubuntu Systems ###
sudo apt-get install build-essential libcurl4-openssl-dev libxml2-dev mime-support
Step 3 – Скачать и скомпилировать S3FS
На этом этапе мы загрузим и скомпилируем последнюю версию s3fs из GitHub. Для этой статьи мы используем s3fs версии 1.74. После загрузки распакуйте архив и скомпилируйте исходный код в систему, используя команды ниже.
cd /usr/src/
yum install git
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./autogen.sh
yum install fuse-devel
./configure
make && make install
Step 4 – Настройка ключа доступа
Для настройки s3fs нам потребуется ключ доступа и секретный ключ вашей учетной записи S3 Amazon, Wasabi или Digital Ocean. Вы можете получить доступ к этим ключам из своей учетной записи соответствующих служб. Когда у вас есть эти ключи, создайте файл, для целей этого урока мы будем называть файл pwd-s3fs.
echo AWSACCESSKEYID:AWSSECRETACCESSKEY > ~/.pwd-s3fs
### Note: Change AWSACCESSKEYID and AWSSECRETACCESSKEY with your actual key values.
После создания файла паролей мы изменим разрешение на файл из соображений безопасности.
chmod 600 ~/.pwd-s3fs
Step 5 – Mount S3 Bucket
Наконец, мы можем смонтировать ведро s3, используя следующий набор команд. Для этого примера мы используем имя сегмента s3 в качестве тестового сегмента и точку монтирования как / s3mnt.
mkdir /tmp/cache /s3mnt
chmod 777 /tmp/cache /s3mnt
s3fs -o usecache=/tmp/cache test-bucket /s3mnt -o passwdfile=/etc/pwd-s3fs
После того, как это будет успешно выполнено, вы сможете получить доступ ко всем файлам в тестовой корзине, просто изменив каталоги на / s3mnt.
Step 6 – Mounting a Wasabi Hot Storage Bucket
Если вы не знакомы с Wasabi, то, согласно их веб-сайту, это хранилище, совместимое с S3, которое в 1/5 раза дороже и в 6 раз быстрее, чем Amazon S3. Поскольку он поддерживает S3 API, работает та же команда, вам нужно только изменить конечную точку, как описано ниже:
s3fs test-bucket /s3mnt -o passwd_file=/etc/pwd-s3fs -o url=https://s3.wasabisys.com
Step 7 – Автомонтирование при перезапуске
#!/bin/sh
# chkconfig: 2345 20 80
# description: Mounts the S3 bucket datanextcloud to mnt/datawas
# Created by Shivanand Sharma BinaryTurf.Com
# License: GPL 3 and "don't blame me".
# Usage:
# Edit the relevant sections of this file like your bucket name and mount point
# copy this file into /etc/init.d/
# sudo chkconfig --add mounts3
# sudo service mounts3 start
# Optional: Configure required runlevels for the service
start() {
echo -n $"Starting..."
sudo s3fs datanextcloud /mnt/datawas
sudo ls -al /mnt/datawas
}
stop() {
echo -n $"Stopping..."
sudo umount /mnt/datawas
}
reload(){
sudo umount /mnt/datawas
sudo s3fs datanextcloud /mnt/datawas
sudo ls -al /mnt/datawas
}
status(){
sudo ls -al /mnt/datawas
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
reload)
reload
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
RETVAL=2
esac
exit $RETVAL
Отредактируйте соответствующие разделы этого файла, такие как имя вашего сегмента и точка монтирования. скопируйте этот файл в /etc/init.d/
sudo chkconfig --add mounts3
sudo service mounts3 start
Необязательно: Настройте необходимые уровни выполнения для службы. Так же ниже прикрепил ссылки на все опции которые можно использовать в команде. Например монтируем и устанавливаем права доступа на папки:
/usr/local/bin/s3fs datanextcloud /mnt/datawas -o passwd_file=/etc/pwd-s3fs -o url=https://s3.eu-central-1.wasabisys.com -o uid=500 -o gid=500
Step 8 Nextcloud. Перенос директории DATA
Посмотрел в файле конфигурации путь к директории data (в ней хранятся все файлы пользователей):
cat /var/www/nextcloud/config/config.php | grep datadirectory |
Отобразилось:
‘datadirectory’ => ‘/var/www/nextcloud/data’,
Потом я включил режим обслуживания, чтобы никто не выполнял никаких действий с данными:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on |
Скопировал директорию data в новую папку и указал владельца и права от имени которого работает веб сервер:
cp -R /var/www/nextcloud/data /srv/nextcloud/data chown -R www-data:www-data /srv/nextcloud/data/ |
Открыл файл конфигурации nextcloud в текстовом редакторе и изменил значение «datadirectory» на путь к новой папке:
nano /var/www/nextcloud/config/config.php |
После этого отключил режим обслуживания:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off |
Готово, директория «data» с данными пользователей успешно перенесена в другое место.
В заключение
В этой статье мы рассмотрели, как использовать s3fs для локального подключения сервисов облачного хранения. Таким образом мы можем использовать обычные команды linux для локального взаимодействия с файлами внутри удаленного сегмента. Некоторые варианты использования включают запуск резервного копирования, копирование файлов и многое другое.
Полезные ссылки: