2019年6月11日 星期二

[Citrix] XenServer 監控 storage 容量

最近有一個需求,就是要監控XenServer 的 storange

因為我們分很多個pool,每個pool是使用不同的lun

所以剛好有這個需求就把script放上來分享給大家

vgdisplay --units G 這個指令就是把你掛載的storange show出來給你看

然後找到對應的storange 名稱 :VG_XenStorage-6e4d4811-ffcd-2593-38f5-abxxxxxxxxx

我這邊告警條件是設定超過85 % 就會發mail通知


#!/bin/bash

storage=VG_XenStorage-6e4d4811-ffcd-2593-38f5-abxxxxxxxxx
diskuse=`vgdisplay --units G $storage |grep "Alloc PE"|awk '{print $7}'`
disktotal=`vgdisplay --units G $storage |grep "VG Size" |awk '{print $3}'`
WARN=85
ADMIN=60dmx@google.com.tw

a=`awk 'BEGIN{printf "%.2f\n",('$disktotal'/'100')}'`
b=`awk 'BEGIN{printf "%.2f\n",('$diskuse'/'$a')}'`
c=`echo | awk '{print int('$diskuse'/'$a')}'`

if [ $c -gt $WARN ]
then
        echo "disk size full!! \n on $(hostname) " | mail -s "Warning: disk space $c %" $ADMIN
        echo "disk size full!! \n on $(hostname) Warning: disk space $c %" > /tmp/disk.txt
fi

[Citrix] XenServer 5.X 6.X 版本repo 更新

最近在增加Xenserver的底層監控發現沒辦法直接用mail去發信

後來發現是因為repo 太舊了...只好把centos 5 的repo換掉

就可以更新yum 安裝檔案了

記得要先把citrix.repo enable=1 改成 0
/etc/yum.repos.d

然後把CentOS-Base.repo 改成下面新的就可以正常更新安裝了


[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/5.11/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/5.11/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

2019年4月9日 星期二

[3C開箱] APC BACK-UPS 1100

之前接手了一台二手 APC 的UPS smart 700
雖然之前已經換過裡面的電池了,但最近又出現異常
所幸上網找了其他款APC的UPS來頂替..!
(被除役的UPS被我拿來接MOD 電視 PS4 Apple tv 用)







































看來看去後來挑到這款符合我需求的UPS "APC BACK-UPS 1100"























 

登登....拆開後迫不及待把它裝起來使用,其實最讓我期待的是有專用的軟體去監控UPS
電量等相關數據的軟體 : PowerChute 電源監控軟體 






































其實家用玩家到底需不需要使用到UPS呢
這個見仁見智拉,我只是單純擔心萬一雷擊或是跳電
造成主機板損壞所以才買的,簡單來說就是買個心安而已
或是停電時可以有短暫的半小時來存檔電腦上的資料

功能諸元表
  6個電池備援與突波保護插座 
■ 可防範透過電話線傳輸的突波和尖波 
■ 按鈕式斷路器可從超載狀況快速恢復正常 
■ PowerChute 電源監控軟體 
■ 全機兩年保固(含電池) 








































最後因為想練習拍影片所以拍了一小段開箱影片,還請多多指教

[Citrix] Xenserver 監控 - Netdata 安裝

最近同事推薦了一款很炫炮的監控軟體,畫面很漂亮很酷
二話不說就馬上上網找步驟安裝起來,但是因為XenServer
安裝比較麻煩需要先改repo才能進行 yum install
這邊我會再寫一篇修改for XenServer 7.x版本的repo檔
下圖是Netdata 監控XenServer 所看到的DashBoard



安裝步驟如下 :

Step 1: Update the system

For security purposes, update the system to the latest stable status using YUM:
sudo yum update -y && sudo reboot
After the reboot finishes, log in with the same sudo user.

Step 2: Install dependencies

In order to install Netdata, you need to install the dependencies below:
sudo yum install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
sudo yum install curl jq nodejs

Step 3: Install Netdata

Install Netdata with the official installation script:
cd ~
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata
sudo ./netdata-installer.sh
During the installation process, Press ENTER to start the installation.
If no errors occur during installation, the Netdata daemon will start.

Step 4: Modify firewall rules

Before you can access Netdata's web interface, you need to modify firewall rules to allow traffic on port 19999, the default communication port of Netdata:
sudo firewall-cmd --permanent --zone=public --add-port=19999/tcp
sudo firewall-cmd --reload

Step 5: View the monitoring interface

Confirm the installation by opening your web browser and visiting the monitoring interface of Netdata:
http://<your-Vultr-server-IP>:19999

[系統設定]
vim /etc/netdata/netdata.conf

* global - 服務的全域設定
* plugins - 啟用或停用插件
* plugin:NAME - 各個插件的設定
* CHART_NAME - 各個圖表的設定
以預設值就已經可以正常的運作了,而這些參數可以視狀況修改:
* update every = 1,每一秒更新一次
* default port = 19999,預設通訊埠在 TCP 19999
* bind to = *,不綁定 IPv4、IPv6 位址
* disconnect idle web clients after seconds = 60,Web Client 閒置 60 秒後就踢掉
* enable web responses gzip compression = yes,啟用網頁 GZip 壓縮功能

[Linux] Git Proxy setting

Configure Git to use a proxy

有些公司都會鎖定Proxy,所以像你要yum install 或是git curl 等等
都需要指定proxy,這邊教大家如何設定git 的 proxy

git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.sslVerify false
這邊也可以直接使用vim 來編輯 

vim ~/.gitconfig

[http]
        proxy = http://proxyUsername:proxyPassword@proxy.server.com:port






2019年2月25日 星期一

生活日常 - 讓你一叫不醒的床墊..眠豆腐

因為最近剛搬新家,被指派要尋找好睡的床墊...

晃著晃著就意外看到我最喜歡的 youtuber "壹加壹" 的開箱影片(有沒有這麼剛好)

請從7分58秒處開始收看~~~~~~~



看了看其實還真的還蠻心動的欸 (腦波很弱) ,但............就很怕會踩雷阿

畢竟沒有試睡過就買了,也太衝動了點吧!!!是不是.........

於是就開始在網路上瘋狂爬文,以及看 ppt 的各種評價

當然啦查Google 也是必需的,誰叫這是工程師的必備技能阿阿阿

看著看著越來越心動,加上看到很多人開箱都說讚,覺得那個床墊好像感覺真的很棒

但...壓倒駱駝的最後一根稻草竟然是這個!!!!!!!!  他的100天試睡計畫

反正大不了睡不喜歡就退了?  直接二話不說立馬拿起信用卡給他刷下去


100 晚試睡計畫

更棒的是,你再也不必跑到賣場尷尬的試躺了,眠豆腐認為最好的試躺場所就是你的臥房,而且不是五分鐘,是 100 個晚上!
這就是眠豆腐震撼業界的「100 晚試睡計畫」!
只要選定尺寸輕鬆一按,就能在家享受眠豆腐,100 晚內不滿意,專人回收全額退費。


千等萬等終於趕在年前送到家裡了....一張床竟然被縮成這樣子,騙我沒看過床墊?


我...該不會被騙了吧...拆開整個大傻眼

竟然用真空包裝縮成一小卷

(結果太興奮忘記拍照了)
.
.
.
.
.
.
  好險攤開後長這樣啦...嚇死我了...能把一張床縮小成這樣也不簡單阿




割開後大概讓他充氣三~五分鐘左右就會膨脹成一張床了(期待)
在充氣的時候那個畫面以及聲音真的很療育阿~~~~~阿斯



結果忘了拍本體就包上床包並躺上去翻滾~~喂!!!!!!!!!!!!!!!!!!!!!!
只好偷一下眠豆腐官網的圖片了來讓你們看一下..是不是看起來很好睡
軟軟的床在呼喚你...快來躺我快來躺我






結論....我和老婆躺上去後就決定不去想退貨的事情了
這麼好睡我幹嘛要退貨拉...........
這是不是被詛咒的床墊阿...躺上去後完全不想下床
睡一睡神清氣爽,考試都考一百分了!?

看到蠻多朋友再問我的就想說不如寫一個心得好了
如果真的擔心的話,來我房間吧?我陪妳一起躺躺看....?!
真的大推拉~~~~~

2019年1月30日 星期三

[Python] 爬網頁分析練習 套件安裝

因為工作需求,第一次自己寫一個很簡單的爬蟲分析

其實也是照著網路上面各個神人的方式刻成符合自己的需求

首先因為python 簡陋,你要依你的需求安裝module

才能帶入這個module的指令

我們今天是要爬網頁,所以會需要安裝下面幾個套件

使用pip install 的指令進行安裝 pip install (your_module_name)

第一個要安裝BeautifulSoup 套件
再來我們還需要搭配使用 lxml 套件與 requests 套件。
lxml 套件是用來作為 BeautifulSoup 的解析器
BeautifulSoup 可以支援的解析器其實不只一種
還有 html.parser(Python 內建)與 html5lib
根據官方文件的推薦,我們使用解析速度最快的 lxml

[Python] CentOS 7 安裝 Python 3.7

1. 我們先看看原生現有的python2在哪裡

[root@kevin /]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python.bak /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
[root@kevin bin]# ll python*
lrwxrwxrwx. 1 root root    9 5月  27 2016 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 11月 20 2015 python2.7
lrwxrwxrwx. 1 root root    7 5月  27 2016 python.bak -> python2

2. 接下來我們要安裝編譯Python3的相關包,安裝相對應套件

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
這裡面有一個包很關鍵libffi-devel,因為只有3.7才會用到這個包,如果不安裝這個包的話,在make階段會出現如下的報錯:
# ModuleNotFoundError: No module named '_ctypes'

3. 安裝pip,因為CentOs 是沒有pip 的。

yum -y install epel-release 
#安装pip 
yum install python-pip

4. 可以用python 安裝一下wget

pip install wget

5. 我們可以下載python3.7的源碼包了

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
#解壓縮
tar -zxvf Python-3.7.0.tgz

#解壓縮後,依序執行下面指令進行編譯
./configure prefix=/usr/local/python3 
make && make install
如果最後沒提示出錯,就代表正確安裝了,在/usr/local/目錄下就會有python3目錄

6. 添加Link

#添加python3的link 
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3.7 
#添加 pip3 的link 
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7
#測試是否成功 
python -V

[Linux] DHCP 服務檢查


1. 查看是否設置開機啟動chkconfig --list | grep dhcpd

2. 查看端口是否打開netstat -anulp | grep :67 

3.查看服務狀態/etc/init.d/dhcpd status【查看是否運行dhcp服務: ps aux | grep dhcp |grep -v grep 】 

4:關閉dhcpd /etc/init.d/dhcpd stop  

5:開啟dhcpd/etc/init.d/dhcpd start

2019年1月21日 星期一

[Linux] Postfix mail 常用命令以及除錯mailq

maildrop:本地郵件放置在maildrop中,同時也被拷貝到incoming中。
incoming:放置正在到達隊列或管理進程尚未發現的郵件。
active:放置隊列管理進程已經打開了並正準備投遞的郵件,該隊列有長度的限制。
deferred:放置不能被投遞的郵件。可能是推遲發送的郵件
啟動postfix
/usr/sbin/postfix start
停止postfix
/usr/sbin/postfix stop
檢查postfix配置檔
/usr/sbin/postfix check
顯示Postfix當前生效的配置信息
postconf -n
重新讀取postfix配置檔
/usr/sbin/postfix reload
查看隊列中的郵件:
mailq
postqueue -p
查看隊列大小
mailq | wc -l
postqueue -p | wc -l
查看信件內容
postcat -q Queue_ID
強制發送隊列中的郵件
/usr/sbin/postfix flush
postqueue -f
暫緩發送隊列中的問題郵件
postsuper -h Queue_ID
postsuper -h ALL deferred
解除暫緩發送的郵件
postsuper -H Queue_ID
postsuper -H ALL deferred
重新加入隊列:
postsuper -r Queue_ID
postsuper -r ALL
刪除指定郵件
postsuper -d Queue_ID
清空隊列中的郵件
postsuper -d ALL
# 刪除隊列中有問題的郵件(正在deferred列表中的郵件,直接刪除郵件文檔,可看出哪些信被刪除了 ):
postsuper -d ALL deferred
find /var/spool/postfix/deferred -type f -exec rm -vf {} \;
# find /var/spool/postfix/defer -type f -exec rm -vf {} \;
列出所有問題郵件(目前所有無法發送的郵件)
find /var/spool/postfix/deferred -type f -exec ls -l --time-style=+%Y-%m-%d_%H:%M:%S {} \;
刪除已經3天未發出的郵件
find /var/spool/postfix/deferred -type f -mtime +3 -exec rm -f {} \;
刪除超過5天的問題郵件的退信記錄(超過5天的 “defer” 列表中的退信)
find /var/spool/postfix/defer -type f -mtime +5 -exec rm -f {} \;
# 以下是一些相關的日誌
查看系統日誌:
tail -f /var/log/messages
查看郵件日誌:基本很全面,幾乎所有遇到的郵件問題都可以通過該日誌來處理
tail -f /var/log/maillog

2019年1月15日 星期二

[Citrix] XenServer VM 備份匯出匯入

通常我們在管理一個服務時最重要的就是
備份 監控 校時

備份 監控 校時
備份 監控 校時
很重要,所以說三遍

今天來介紹怎麼做匯出匯入xenserver vm的 指令showmount -e  看哪個資料夾可以掛載,在那台compute node 
把路徑mount起來
ex : Mount -t nfs 10.100.1.1:/volume/storage /mnt/vm-backup/

匯出的指令:
xe vm-export vm=0d2b5f9a-c88f-6b27-be08-4ac61baadc41 filename=/mnt/vm-backup

匯入的指令:
xe vm-import filename=/mnt/vm-backup檔案 sr-uuid=storaeuuid

2019年1月5日 星期六

[Linux] Rsync 檔案同步備份 & 差異備份

因為最近在同步檔案於是上網查了一下,能怎樣更有效地做備份
一般都只是用cp這個指令來做,只是他會變得copy全部的檔案,耗費時間太長了
也會佔用頻寬還有機器的效能,後來查到了可以用rsync這個指令來做
下面是指令的介紹

rsync 基本用法

rsync 的基本語法結構如下:
rsync 參數 來源檔案 目的檔案
以下是最常見的幾個參數:
  • -v:verbose 模式,輸出比較詳細的訊息。
  • -r:遞迴(recursive)備份所有子目錄下的目錄與檔案。
  • -a:封裝備份模式,相當於 -rlptgoD,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記。
  • -z:啟用壓縮。
  • -h:將數字以比較容易閱讀的格式輸出。
rsync 最簡單的用法就是複製本地端的檔案:
rsync -avh myfile.gz /home/pi/tmp/
sending incremental file list
myfile.gz

sent 14.34M bytes  received 35 bytes  28.67M bytes/sec
total size is 14.33M  speedup is 1.00
其效果就跟 cp -r 類似,可將 myfile.gz 複製到 /home/pi/tmp/ 目錄中,不過如果執行第二次時,rsync 就會自動跳過沒有變動的檔案:
rsync -avh myfile.gz /home/pi/tmp/
sending incremental file list

sent 74 bytes  received 12 bytes  172.00 bytes/sec
total size is 14.33M  speedup is 166,658.15
這種用法對於檔案或目錄都適用:
rsync -avh /path/to/myfolder /home/pi/tmp/

rsync 遠端備份

rsync 也可以用於不同台機器之間的遠端備份,這樣的用法就跟 scp 指令很像,不過 rsync 會更有效率:
rsync -avzh /mypath/myfile.gz pi@192.168.1.12:/mybackup/
這樣就會將本地端的 myfile.gz 備份至 pi@192.168.1.12 的 /mybackup/ 目錄中,在遇到這種遠端備份的狀況時,rsync 預設會以 ssh 的方式登入遠端的機器,所以在執行這行備份指令之後,要接著輸入pi@192.168.1.12 的密碼,接著就會開始備份資料,輸出會類似這樣:
pi@192.168.1.12's password: 
sending incremental file list
myfile.gz

sent 13.62M bytes  received 34 bytes  48.56K bytes/sec
total size is 14.33M  speedup is 1.05
而這裡我們多加入一個 -z 參數,目的是讓 rsync 可以自動將資料壓縮後再傳送,並在遠端接收到資料後自動解壓縮,減少網路傳輸的資料量。
rsync 也可以將遠端的檔案備份至本地端,其語法也跟 scp 類似:
rsync -avzh pi@192.168.1.12:/mypath/myfile.gz /mybackup/
pi@192.168.1.12's password: 
receiving incremental file list
myfile.gz

sent 30 bytes  received 23.74M bytes  571.98K bytes/sec
total size is 24.14M  speedup is 1.02
這裡的 rsync 在複製檔案時,由於我們加入了 -a 參數,所以可以用於檔案或是整個目錄的備份,相當於 scp -r 的效果,而且由於 rsync 只會傳輸有變動的部份,所以通常在異地備份資料時都會使用這種方式來處理。

-v, --verbose 詳細模式輸出訊息
-q, --quiet 安靜模式,幾乎沒有訊息產生。常用在以 cron 執行 rsync
-c, --checksum 打在傳送之前透過 128bit 的 MD4 檢查碼來檢查所有要傳送的檔案(會拖慢速度)
-a, --archive 備份模式,表示以遞迴方式傳輸文件,並保持所有文件屬性,等於 -rlptgoD(沒有 -H)
-r, --recursive 對子目錄以遞迴模式處理
-R, --relative 使用相對路徑名稱
     --no-relative 不使用相對路徑
     --no-implied-dirs 

-b, --backup 產生備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名為 ~filename。可以使用 --suffix 選項來指定不同的備份文件前綴。
     --backup-dir=DIR 將備份文件(如~filename)存放在在目錄下。
     --suffix=SUFFIX 定義備份文件前綴
-u, --update 僅僅進行更新,也就是略過所有已經存在於目的端,且文件時間比要備份的檔案為新。(不覆蓋較新的文件) 
     --inplace 
-K, --keep-dirlinks 接收方將連結到資料夾的檔案視為資料夾處理
-l, --links 保留符號連結
-L, --copy-links 像對待常規文件一樣處理符號連結
     --copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的連結
     --safe-links 忽略指向來源端路徑目錄樹以外的連結
-H, --hard-links 保留硬式連結
-p, --perms 保留檔案權限
-o, --owner 保留檔案擁有者資訊(root only)
-g, --group 保留檔案所屬群組資訊
-D, --devices 保留設備檔案資訊(root only)
-t, --times 保留檔案時間資訊
-S, --sparse 對稀疏檔案進行特殊處理以節省目的端的空間
-n, --dry-run 不實際執行傳送,只顯示將會有的傳輸動作
-W, --whole-file 複製檔案,不進行增量檢測
     --no-whole-file 關閉 --whole-file 參數
-x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)
-B, --block-size=SIZE 強制透過 rsync 程式去比對修復 block-sizeforce,預設是700字節
-e, --rsh=COMMAND 定義所使用的 remote shell
     --rsync-path=PATH 定義 rsync 在遠端機器存放資料的路徑
     --existing 只比對更新目的端已經存在的檔案,而不備份那些新產生的檔案
     --ignore-existing 忽略目的端已經存在的檔案(也就是不更新)
     --delete 刪除傳送端已經不存在,而目的端存在的檔案
     --delete-excluded 除了把傳送端已經不存在,而目的端存在的檔案刪除之外,也刪除 --exclude 參數所包含的檔案
     --delete-after rsync 預設會在檔案傳送前進行相關刪除動作確保接收端有足夠的檔案空間,但可以透過 --delete-after 讓刪除動作在檔案傳送後再行刪除
     --ignore-errors 忽略任何錯誤既使是 I/O error 也進行 --delete 刪除動作
     --max-delete=NUM 定義 rsync 不要刪除超過 NUM 個檔案
     --partial rsync若遇到傳輸過程中斷時,會把那些已經傳輸的檔案刪除。在某種狀況下保留那些部分傳送的檔案是令人高興的。你可以透過 --partial 參數達到這個目的
     --partial-dir=DIR 在 --partial 參數啟動時,你還可以定義 rsync 把那些部分傳送的檔案寫入定義的資料夾,而非直接寫入目的端。需要注意的是,此資料夾不應該被其他使用者可以寫入(如:/tmp)
     --force 當目的端資料夾被傳送端非資料夾名稱覆蓋時,強制 rsync 刪除資料夾,即使該資料夾不是空的
     --numeric-ids 不將傳送端檔案的 UID 及 GID 值,與目的端的使用者/群組進行配對。若傳送端並沒有 UID 及 GID 的對應名稱(如:原帳號群組被刪除的遺留檔案),或目的端沒有相對應的帳號/群組,保留數字型態的 UID/GID
     --timeout=TIMEOUT 設定 I/O 逾時的時間(秒)。超過這個秒數而沒有資料傳送,rsync 將會結束。預設為 0,也就是沒有定義逾時時間
-I, --ignore-times 不跳過那些有同樣的時間和長度的文件,可以透過此參數關閉此快速檢查
     --size-only 只檢查檔案大小是否改變,不管時間存取點是否改變。通常用在 mirror,且對方時間不太正確時
     --modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,預設為 0 
-T, --temp-dir=DIR 定義 rsync 在接收端產生暫時性的複製檔案時使用資料夾暫存。預設是直接在接收端資料夾直接產生暫存檔案
     --compare-dest=DIR 定義 rsync 在目的端建立資料夾來比對傳送過來的檔案
     --link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結
-P, 等同於 --partial --progress 顯示備份過程,只是為了把參數簡單化
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
-C, --cvs-exclude 排除那些通常不希望傳送的檔案。定義的方式與CVS傳送相同:
                          RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ 符合以上條件的都會被忽略而不傳送
     --exclude=PATTERN 符合 PATTERN(規則表示式)樣式的檔案不進行傳送
     --exclude-from=FILE 和 --exclude 參數相同,不過是把不進行傳送的檔案事先寫入某一檔案,執行時,透過此參數讓 rsync 讀取。(; # 開頭的行列或空白行會被 rsync 忽略)
     --include=PATTERN 指定義 rsync 不要排除符合 pattern 樣式的檔案
     --include-from=FILE 和 --include 參數相同,只不過把要包含的檔案寫到某一檔案
     --files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案,讓 rsync 讀取
                             如:rsync -a --files-from=/tmp/foo /usr remote:/backup
-0, --from0 定義檔案所要讀取的檔案是null字元結尾
     --version 顯示 rsync 版本
     --daemon 定義 rsyn c以 daemon 型態執行
     --no-detach 當以 daemon 型態執行時,不要進行分裂且變成背景程序
     --address=ADDRESS 定義所要連結(bind)的ip位址或是 host 名稱(daemon限定)
     --config=FILE 定義所要讀取的設定檔 rsyncd.conf 位置(daemon 限定)
                        預設值為 /usr/local/etc/rsyncd.conf
     --port=PORT 定義 rsyncd(daemon)要執行的 port(預設為 tcp 873)
     --blocking-io 使用 blocking I/O 連結遠端的 shell,如 rsh、remsh
     --no-blocking-io 使用 non-blocking 連結遠端的 shell,如 ssh(預設值)
     --stats 顯示檔案傳送時的資訊狀態
     --progress 顯示傳送的進度(給檔案傳送時,怕無聊的人用的..)
     --log-format=FORMAT 定義 log 的格式(在 rsyncd.conf 設定)
     --password-file=FILE 從檔案讀取與遠端 rsync 伺服器連結的密碼
     --bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)
     --write-back=FILE 把紀錄資料寫入一個檔案(給其他相同環境且相同需求的機器使用)
     --read-batch=FILE 透過讀取紀錄檔案來進行傳輸(檔案由 --write-batch 參數產生)
     --checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)
-4, --ipv4 使用 IPv4 協定
-6, --ipv6 使用 IPv6 協定
-h, --help 顯示 rsync 求助資訊

限制網路頻寬

如果不想讓 rsync 在透過網路備份資料時,佔用太大的網路頻寬而影響正常的服務,可以加上 --bwlimit 參數來指定資料傳輸的速度上限:
rsync -avzh --bwlimit=100K pi@192.168.1.12:/mypath/myfile.gz /mybackup/
pi@192.168.1.12's password: 
receiving incremental file list
myfile.gz

sent 30 bytes  received 14.34M bytes  99.22K bytes/sec
total size is 14.33M  speedup is 1.00

參考:GT大的介紹 https://blog.gtwang.org/linux/rsync-local-remote-file-synchronization-commands/