S4 是 Simple Storage Solution Syncer 的縮寫,是一種免費的開源工具,用於將您的文件同步到 Amazon S3 服務,該服務可通過 Linux 命令行運行。 它與 S3 協同工作,就像 One Drive 或 DropBox 等專有解決方案一樣工作。 它以可承受的成本提供非常快的上傳和下載速度。 此外,S4 使您能夠對上傳進行版本控制,以便您可以在需要時輕鬆回滾到以前的版本。
S4 工具能夠使用位於正在同步的每個根文件夾的文件中的 .index 文件跟踪文件更改該文件夾帶有每個正在同步的文件的密鑰,包括位於本地和遠程的時間戳。 這些文件採用 JSON 格式。 可以使用 ls 子命令查看密鑰。 s3cmd 是另一個工具,其用途與我們在文章前面介紹的目的相同。
在 Centos 7 上安裝
安裝 EPEL 存儲庫。 EPEL 是 Extra Repositories for Enterprise Linux 的縮寫。
# yum -y install epel release
刷新回購
# yum repolist
安裝蟒蛇3
# yum install yum-utils
# yum-builddep python
# curl -O https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
解壓文件
# tar xvf Python-3.5.0.tgz
導航到文件夾 Python-3.5.0
# cd Python-3.5.0
構建並安裝python3
# ./configure
# make
# make install
安裝pip3
# yum install python34-setuptools
# easy_install-3.4 pip
安裝
# pip install s4
在 Ubuntu 17.01 和 Debian 9 上安裝
安裝蟒蛇3
apt-get install python3
安裝開發工具和一些更多的包,以獲得穩定和健壯的環境
apt-get install build-essential libssl-dev libffi-dev python-dev
安裝pip3
# apt-get install python3-pip
檢查 pip 版本
# pip3 –version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
安裝 s4
# pip install s4
設置 S3 存儲桶
登錄您的 AWS 賬戶並前往“存儲”下的“s3”部分並創建一個存儲桶。 在這 example,我創建了一個名為 萬能2030
授予存儲桶“公共”訪問權限並授予它讀寫存儲桶權限。 同時啟用“列表”和“寫入對象”。
在創建的存儲桶中,繼續並創建一個文件夾,我們將使用該文件夾從終端同步文件。 在這種情況下,文件夾被稱為 項目1.
如何運行 S4 命令
創建一個本地目錄並添加一些文件
# mkdir project1
# cd project1
# touch file1.txt file2.txt
跑
s4 add
鍵入本地目錄的路徑並提供您的 AWS 憑證
local folder: /home/Jamie/project1
s3 uri: s3://magnum2030/project1
AWS Access Key ID: AKIAJD53D9GCGKCD
AWS Secret Access Key:
region name: us-east-2
Provide a name for this entry [project1]:jamie
同步文件
# s4 sync project1
# Syncing Project1 [/home/jamie/project1/ s3://magnum2030/project1/]
前往您的遠程文件夾 項目1 在裡面 萬能2030 存儲桶並確認兩個文件的存在。
讓我們在文件中附加幾行文本
echo "Seasons greetings!" >> file1.txt
echo "Happy holiday folks!" >> file2.txt
運行同步命令以同步 AWS 中遠程文件中的更改
s4 sync project1
輸出
Creating . (s3://magnum2030/project1/ => /home/jamie/project1/)
An error occurred while trying to update .: 'NoneType' object has no attribute 'total_size'
Updating file1.txt (/home/jamie/project1/ => s3://magnum2030/project1/)
Updating file2.txt (/home/jamie/project1/ => s3://magnum2030/project1/)
前往我們的文件 項目1 文件夾並確認已生效的更改。
持續同步文件
要執行文件的永久同步,請使用“守護進程”命令
s4 daemon project1
如何打印現有目標
# s4 targets
輸出
s3://magnum2030/project1/] ?region=us-east-1: [/home/jamie/project1 <=> https://s3.console.aws.amazon.com/s3/buckets/magnum2030/project1/?region=us-east-1] Jamie: [/home/jamie/project1 <=> https://s3.console.aws.amazon.com/s3/buckets/magnum2030/project1/?region=us-east-2&tab=overview] Project1: [/home/jamie/Downloads <=> s3://mybucket/Downloads] james: [/home/jamie/project1 <=> s3://magnum2030/project1] jamie: [/home/jamie/project1 <=> s3://magnum2030/project1] jay: [/home/jamie/aws <=> s3://magnum2030/project1] project1: [/home/jamie/project1 <=> s3://magnum2030/project1] test1: [/home/jamie/project1 <=> s3://magnum2030/project1]>
列出目標的內容
# s4 ls project1
移除目標
s4 rm target-name
筆記
目標名稱是在下面的倒數第二行中指定的名稱。
忽略文件
在正在同步的目錄中創建一個 .syncignore 文件 – 項目1。 此文件列出並確定在同步過程中要忽略的文件或目錄。 每個行條目代表一個要被同步功能忽略的文件或文件夾。 例如,.syncignore 文件中存在“TestExample”將強制同步忽略所有名為“TestExample”的文件和文件夾。
希望您喜歡這篇文章,並請添加您的評論。