S4 – 使用 Amazon S3 同步本地文件的命令行工具

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”的文件和文件夾。

希望您喜歡這篇文章,並請添加您的評論。