一、準備樹莓派
-
準備系統
在這裏下載最新的鏡像,或者在這裏下載歷史鏡像。
可以選擇不帶桌面最精簡的Lite
,這裏使用最新的帶桌面的with desktop
版本。
建議下載種子,然後使用迅雷等下載工具下載。
下載 Win32 Disk Imager,直接下載即可,安裝。
將SD卡通過讀卡器連接到電腦,從下載的文件(.zip)解壓出系統(.img),選擇後寫入,等待5分鐘左右。
寫入完成後,在boot
盤裏新建空白文件ssh
,不需要後綴,後續SSH連接時使用。
可以直接右鍵新建一個TXT文件,重命名爲ssh
。
安全彈出SD卡,將SD卡插到樹莓派上。
插上網線連接到路由器,使用5V 2.5A適配器供電。 -
配置網絡
登錄路由器管理界面,查看樹莓派IP地址。
使用SSH工具連接到樹莓派,這裏使用MobaXterm。
默認賬戶名:pi
,密碼:raspberry
。pi@raspberrypi:~ $ ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.103 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::d8e:4f58:5590:c47c prefixlen 64 scopeid 0x20<link> ether b8:27:eb:22:30:9f txqueuelen 1000 (Ethernet) RX packets 514 bytes 45984 (44.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 198 bytes 36548 (35.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
默認沒有打開無線網卡,使用
rfkill unblock
。pi@raspberrypi:~ $ rfkill list 0: phy0: Wireless LAN Soft blocked: yes Hard blocked: no 1: hci0: Bluetooth Soft blocked: no Hard blocked: no pi@raspberrypi:~ $ rfkill unblock 0 pi@raspberrypi:~ $ rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no 1: hci0: Bluetooth Soft blocked: no Hard blocked: no pi@raspberrypi:~ $ ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.103 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::d8e:4f58:5590:c47c prefixlen 64 scopeid 0x20<link> ether b8:27:eb:22:30:9f txqueuelen 1000 (Ethernet) RX packets 779 bytes 64604 (63.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 284 bytes 45312 (44.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether b8:27:eb:77:65:ca txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
修改網絡接口配置文件
/etc/network/interfaces
。設置爲動態IP,配置無線網絡的SSID和密碼。pi@raspberrypi:~ $ sudo vi /etc/network/interfaces # 在最後添加 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid "IoT" wpa-psk "12345678"
重啓樹莓派sudo reboot now
。
可以在路由器管理界面看到樹莓派的無線網卡連接上了。
使用路由器DHCP服務器的靜態地址分配功能,爲樹莓派固定IP地址。
樹莓派的網絡名稱默認是raspberrypi
,可以修改以便更好地辨識。
需要改兩個地方,/etc/hostname
和/etc/hosts
。
首先,hostname
文件裏直接編輯替換掉文件內容即可,必須是一個單詞,不能包含任何標點符號和特殊字符(包括下劃線_)。pi@raspberrypi:~ $ sudo vi /etc/hostname
其次,在
hosts
中最後一行,將raspberrypi
替換成與前面一致的單詞。pi@raspberrypi:~ $ sudo vi /etc/hosts
配置完成後重啓樹莓派。路由器管理頁可以看到兩個靜態IP,分別是有線網卡和無線網卡的。此時可以拔下網線,使用SSH登錄無線網卡對應的IP地址。
-
更新源
將軟件源更改爲國內的清華源 ,提高軟件的下載的穩定性和速度。
pi@nas:~ $ sudo vi /etc/apt/sources.list
# 註釋掉原內容
# 添加以下內容
# 注意,如果系統是stretch的,要將buster改爲stretch。
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
pi@nas:~ $ sudo vi /etc/apt/sources.list.d/raspi.list
# 註釋掉原內容
# 添加以下內容
# 注意,如果系統是stretch的,要將buster改爲stretch。
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
# 最後,更新軟件源列表
pi@nas:~ $ sudo apt-get update
- 遠程桌面
這裏安裝帶有圖形化界面的系統,可以使用RDP(Remote Desktop Protocol,遠程桌面協議)登錄樹莓派,需要安裝xrdp
軟件。
pi@nas:~ $ sudo apt-get install xrdp
xrdp
是一個 守護進程,安裝完後和樹莓派啓動時,xrdp
服務會自動啓動。
在Windows中,按住WIN
+R
,彈出運行
窗口, 輸入mstsc
,啓動遠程桌面連接
。
賬戶信息和登錄樹莓派是使用的一樣,默認帳號pi
,密碼raspberry
。
6. 修改密碼
出於安全考慮,通過passwd
修改用戶pi
和root
密碼。
pi@nas:~ $ sudo passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
pi@nas:~ $ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
注意RDP登錄的密碼也受此影響。
二、初始化存儲設備
- 分區及格式化
在樹莓派USB口插入兩個U盤,使用sudo fdisk -l
可以看到連接的U盤。
pi@nas:~ $ sudo fdisk -l
# 此處省略其他磁盤信息
Disk /dev/sda: 28.9 GiB, 31029460992 bytes, 60604416 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4512774c
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 109824 60604415 60494592 28.9G c W95 FAT32 (LBA)
Disk /dev/sdb: 28.9 GiB, 31029460992 bytes, 60604416 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6f680e7
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 109824 60604415 60494592 28.9G c W95 FAT32 (LBA)
刪除原有的分區表,創建只包含一個分區的分區表,並格式化爲ext4文件系統。
pi@nas:~ $ sudo fdisk /dev/sda1
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): o # o是創建一個空的分區表
Created a new DOS disklabel with disk identifier 0xdda30595.
Command (m for help): n # n是添加新的分區
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): # 直接回車,默認創建主分區
Using default response p.
Partition number (1-4, default 1): # 直接回車,默認值
First sector (2048-60494591, default 2048): # 直接回車,默認值
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60494591, default 60494591): # 直接回車,默認值
Created a new partition 1 of type 'Linux' and of size 28.9 GiB.
Command (m for help): p # p是打印分區表
Disk /dev/sda1: 28.9 GiB, 30973231104 bytes, 60494592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdda30595
Device Boot Start End Sectors Size Id Type
/dev/sda1p1 2048 60494591 60492544 28.9G 83 Linux
Command (m for help): w # w是將分區表寫入磁盤並退出
The partition table has been altered.
Syncing disks.
# 格式化U盤,需要等待幾分鐘,需要先卸載了再格式化
pi@nas:~ $ sudo mkfs.ext4 /dev/sda1 # 掛載時格式化報錯
mke2fs 1.44.5 (15-Dec-2018)
Found a dos partition table in /dev/sda1
Proceed anyway? (y,N) y # 輸入y
/dev/sda1 is mounted; will not make a filesystem here!
pi@nas:~ $ umount /dev/sda1 # 先卸載U盤
pi@nas:~ $ sudo mkfs.ext4 /dev/sda1 # 格式化
mke2fs 1.44.5 (15-Dec-2018)
Found a dos partition table in /dev/sda1
Proceed anyway? (y,N) y # 輸入y
Creating filesystem with 7561824 4k blocks and 1892352 inodes
Filesystem UUID: 0024c9ea-4959-44d7-aece-9465c84dc085
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
對第二個U盤/dev/sdb1
也是同樣的操作,將以上命令裏的/dev/sda1
更換爲/dev/sdb1
就可以。
pi@nas:~ $ sudo fdisk /dev/sdb1
pi@nas:~ $ umount /dev/sdb1
pi@nas:~ $ sudo mkfs.ext4 /dev/sdb1
爲方便後續的磁盤管理,使用e2label
爲磁盤指定卷標。這樣就可以通過卷標掛載磁盤,即使磁盤更換了接口。
pi@nas:~ $ sudo e2label /dev/sda1 data
pi@nas:~ $ sudo e2label /dev/sdb1 backup
pi@nas:~ $ sudo e2label /dev/sda1
data
pi@nas:~ $ sudo e2label /dev/sdb1
backup
格式化和建立卷標也可以合爲一條命令,但還是建議先全部格式化後再統一指定卷標。
pi@nas:~ $ sudo mke2fs -t ext4 /dev/sda1 -L data
pi@nas:~ $ sudo mke2fs -t ext4 /dev/sdb1 -L backup
- 自動掛載
autofs服務程序是一種Linux系統守護進程,在用戶需要使用該文件系統時纔會動態掛載,從而節約了網絡資源和服務器硬件資源,也避免了在範圍磁盤時設備沒有掛載的問題。
# 安裝 autofs
pi@nas:~ $ sudo apt install autofs
# 創建掛載點 /nas
pi@nas:~ $ sudo mkdir /nas
# 設置使用時自動掛載設備
# 修改 /etc/auto.master
pi@nas:~ $ sudo vi /etc/auto.master
# 在文件最後添加
/nas /etc/auto.misc
# 修改 /etc/auto.misc
pi@nas:~ $ sudo vi /etc/auto.misc
# 在文件最後添加
data -fstype=ext4,rw :/dev/disk/by-label/data
backup -fstype=ext4,rw :/dev/disk/by-label/backup
# 重新啓動autofs服務
pi@nas:~ $ sudo service autofs restart
pi@nas:~ $ ls /nas/ # 此時沒有掛載U盤
pi@nas:~ $ cd /nas/data # 使用時自動掛載data
pi@nas:/nas/data $ ls /nas/
data
pi@nas:/nas/data $ cd /nas/backup # 使用時自動掛載backup
pi@nas:/nas/backup $ ls /nas
backup data
三、NFS服務器
- 配置NFS
# 安裝NFS服務器
pi@nas:~ $ sudo apt install nfs-kernel-server
# 公開/nas/data目錄
pi@nas:~ $ sudo vi /etc/exports
# 在文件最後添加
/nas/data 192.168.0.*(rw,sync,no_subtree_check,no_root_squash)
# 重新啓動NFS服務
pi@nas:~ $ sudo systemctl restart nfs-server.service
# 設置NFS服務開機自啓動
pi@nas:~ $ sudo systemctl enable nfs-server
# 啓動和停止命令
pi@nas:~ $ sudo systemctl start nfs-server.service
pi@nas:~ $ sudo systemctl stop nfs-server.service
# 查詢NFS服務狀態
pi@nas:~ $ sudo systemctl status nfs-server.service
- Windows下使用
在啓動或關閉Windows功能
中,啓用NFS服務
。
按住WIN
+R
,彈出運行
窗口, 輸入regedit
,啓動註冊表編輯器
。
找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
,添加兩項AnonymousUid
、AnonymousGid
,值爲0
,否則對NFS服務器的文件只有讀權限。
重啓Windows系統。
按住WIN
+R
,彈出運行
窗口, 輸入cmd
,啓動命令行窗口
。C:\Users\LCH>showmount -e \\192.168.0.121 導出列表在 192.168.0.121: /nas/data 192.168.0.* C:\Users\LCH>mount \\192.168.0.121\nas\data X:\ X: 現已成功連接到 \\192.168.0.121\nas\data 命令已成功完成。 C:\Users\LCH>umount X:\ 正在斷開連接 X: \\192.168.0.121\nas\data 命令已成功完成。
也可以通過映射網絡驅動器進行連接。
- Linux下使用
pi@NAS:~ $ sudo apt-get install nfs-common portmap
pi@NAS:~ $ sudo mkdir /mnt/data
pi@NAS:~ $ sudo mount -t nfs 192.168.0.121:/nas/data /mnt/data
pi@NAS:~ $ ls /mnt/data/
lost+found
pi@NAS:~ $
- Mac下使用
四、數據備份
- 增量備份
rsync是遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的rsync算法
來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。
rsync有六種不同的工作模式,這裏使用的是拷貝本地文件的模式,將/nas/data
的數據拷貝到/nas/backup
裏。
在/nas/backup
裏初始化一個完整的備份。
pi@nas:~ $ sudo rsync -a /nas/data/ /nas/backup/2020-04-19
這裏,新建了一個初始化腳本InitializeBackup.sh
用於初始化完整備份。
#!/bin/bash
# InitializeBackup.sh
DATADIR=/nas/data/
BACKUPDIR=/nas/backup/
TODAY=$(date +%Y-%m-%d)
TODAYPATH=${BACKUPDIR}/${TODAY}/
LASTDAY=$(ls ${BACKUPDIR} | tail -n 1)
LASTDAYPATH=${BACKUPDIR}/${LASTDAY}/
# echo "${TODAYPATH}"
# echo "${LASTDAYPATH}"
if [[ ! -n "${LASTDAY}" ]]; then
echo "Initialization:${TODAYPATH}"
if [[ ! -e ${TODAYPATH} ]]; then
mkdir -p ${TODAYPATH}
fi
rsync -a ${DATADIR} ${TODAYPATH}
elif [[ "${LASTDAYPATH}" == "${TODAYPATH}" ]]; then
echo "Reinitialization:${TODAYPATH}"
rm -rf ${TODAYPATH}
rsync -a ${DATADIR} ${TODAYPATH}
else
echo "Not clean:${BACKUPDIR}"
fi
在後續的備份中,使用--link-dest=DIR
參數,當文件未改變時,基於DIR創建硬鏈接文件。
比如,基於初始化的完整備份,新建增量備份2020-04-20
。
pi@nas:~ $ sudo rsync -a --link-dest /nas/backup/2020-04-19/ /nas/data/ /nas/backup/2020-04-20/
# 可以看到測試文件2020-4-19.txt的文件ID是一樣
pi@nas:~ $ ls -i /nas/backup/2020-04-19
262147 2020-4-19.txt 262146 lost+found
pi@nas:~ $ ls -i /nas/backup/2020-04-20
262147 2020-4-19.txt 1048579 2020-4-20.txt 1048578 lost+found
這裏,新建了一個日常備份腳本DailyBackup.sh
,用於後續新建日常任務時進行調用。
#!/bin/bash
# DailyBackup.sh
DATADIR=/nas/data/
BACKUPDIR=/nas/backup/
SCRIPTDIR=/nas/data/backup_scripts
TODAY=$(date +%Y-%m-%d)
TODAYPATH=${BACKUPDIR}/${TODAY}/
LASTDAY=$(ls ${BACKUPDIR} | grep -v -e log | tail -n 1)
LASTDAYPATH=${BACKUPDIR}/${LASTDAY}/
echo "Incremental backup: ${TODAYPATH}"
rsync -a --link-dest ${LASTDAYPATH} ${DATADIR} ${TODAYPATH}
- 刪除歷史備份
備份的保留策略是,保留過去5年每年的1月1日,過去12個月每月的1號,過去的4周每個週日,以及過去的7天的備份。
除了保留的備份,其他備份都刪除。
#!/bin/bash
# DeleteOldBackup.sh
BACKUPDIR=/nas/backup/
# backups of January 1st for the last 5 years
function listYearlyBackups() {
for i in {0..4}
do
ls ${BACKUPDIR} | egrep "$(date +%Y -d "${i} year ago")-01-01"
# ls用於列出備份目錄下的所有備份,目錄名格式是yyyy-mm-dd,如2020-04-19,然後通過管道連接egrep
# egrep通過模式匹配,查找yyyy-01-01的目錄,也就是每年1月1日的目錄,其中,yyyy通過date命令和for循環獲取當年以及往前4年的年份
done
}
# backups of the 1st of the last 12 months
function listMonthlyBackups() {
for i in {0..11}
do
ls ${BACKUPDIR} | egrep "$(date +%Y-%m -d "${i} month ago")-01"
# 原理同上,匹配當年當月以及往前11個月的1號
done
}
# backups of the last 4 Sundays
function listWeeklyBackups() {
for i in {0..3}
do
ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "-$(($(date +%u) + 7*${i})) day")"
# 原理同上,匹配當年當週以及往前3周的週日
done
}
# backups of the last 7 days
function listDailyBackups() {
for i in {0..6}
do
ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "-${i} day")"
# 原理同上,匹配當年當月當日以及往前6天
done
}
# get all reserved backups
function getAllBackups() {
listYearlyBackups
listMonthlyBackups
listWeeklyBackups
listDailyBackups
}
# remove duplicates
function listUniqueBackups() {
getAllBackups | sort -u
# sort -u 用於刪除重複目錄
}
# filter out backups for deletion
function listBackupsToDelete() {
ls ${BACKUPDIR} | grep -v -e "$(echo -n $(listUniqueBackups) |sed "s/ /\\\|/g")"
# grep -v 反轉查找,即出列後面列出的保留的目錄外,其他目錄均刪除
# grep -e 進行模式匹配
# sed命令對字符串進行字符替換,\\\|是\|的轉義,s/ /\\\|/g是將空格替換爲\|
}
cd ${BACKUPDIR}
echo "Reserved backups: $(listUniqueBackups | xargs)"
echo "Deleted backups: $(listBackupsToDelete | xargs)"
listBackupsToDelete | xargs rm -rf # 通過管道和xargs命令將要刪除的目錄傳給rm命令
- 恢復數據
簡單恢復數據的話,只需要挑選備份的目錄,將其內容複製回/nas/data/
便可以了。
五、郵件提醒
- 安裝配置
發送郵件使用heirloom-mailx
。
# 安裝 heirloom-mailx
pi@nas:~ $ sudo apt-get install heirloom-mailx
# 修改配置
pi@nas:~ $ sudo vi /etc/s-nail.rc
# 在最後添加
set from="[email protected]"
set smtp="smtps://smtp.163.com:465"
set smtp-auth-user="[email protected]" # 這裏我發送和接收用同一個郵箱,不然可能會被認爲是垃圾郵件
set smtp-auth-password="your_password" # 網易郵箱使用的是授權碼,在網頁郵箱裏設置
set smtp-auth=login
- 發送郵件
測試配置是否成功。
pi@nas:~ $ echo "test" | heirloom-mailx -s "TEST" "[email protected]"
六、定時執行
- 執行腳本
新建了一個腳本DailyRun.sh
,調用備份DailyBackup.sh
、刪除備份DeleteOldBackup.sh
、檢查磁盤容量CheckDiskRemain.sh
,並將log以郵件形式發送出去。
#!/bin/bash
# CheckDiskRemain.sh
DATADIR=/nas/data
BACKUPDIR=/nas/backup
# 簡單地使用df顯示磁盤空間並匹配出/nas/data和/nas/backup
df -h | grep -e 'Filesystem' -e ${DATADIR} -e ${BACKUPDIR}
#!/bin/bash
# DailyRun.sh
DATADIR=/nas/data/
BACKUPDIR=/nas/backup/
SCRIPTDIR=/nas/data/backup_scripts/
TODAY=$(date +%Y-%m-%d)
LOGFILE=${BACKUPDIR}/${TODAY}.log
EMAIL="[email protected]"
if [[ -f ${LOGFILE} ]];then
rm ${LOGFILE}
fi
# 暫存標準輸出和錯誤輸出
exec 3>&1
exec 4>&2
# 將標準輸出和錯誤輸出重定向到log文件
exec 1>>${LOGFILE}
exec 2>>${LOGFILE}
# 調用相關腳本並將打印信息輸出到log文件
echo "**********DAILYBACKUP**********"
${SCRIPTDIR}/DailyBackup.sh
echo -e "\n**********DELETEBACKUP**********"
${SCRIPTDIR}/DeleteOldBackup.sh
echo -e "\n***********DISKREMAIN***********"
${SCRIPTDIR}/CheckDiskRemain.sh
echo -e "\n"
# 恢復標準輸出和錯誤輸出
exec 1>&3
exec 2>&4
# cat ${LOGFILE}
# 發送郵件並且將錯誤輸出到log文件
heirloom-mailx -s "Raspberry Pi NAS Log - ${TODAY}" ${EMAIL} < ${LOGFILE} 2>>${LOGFILE}
先測試運行下腳本。
pi@nas:~ $ sudo /nas_backup_scripts/DailyRun.sh
pi@nas:~ $ cat /nas/backup/2020-04-19.log
**********DAILYBACKUP**********
Incremental backup: /nas/backup//2020-04-19/
**********DELETEBACKUP**********
Reserved backups: 2020-04-19 2020-04-19.log
Deleted backups:
***********DISKREMAIN***********
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 29G 45M 27G 1% /nas/data
/dev/sda1 29G 45M 27G 1% /nas/backup
- 校正時間
從上面的郵件接收時間和備份日期可以看出,樹莓派系統的時間與北京時間是不一致的。
pi@nas:~ $ date
Sun 19 Apr 18:16:57 BST 2020
可以直接通過raspi-config
-4 Localisation Options
-I2 Change Timezone
-Asia
-Shanghai
設置。
pi@nas:~ $ sudo raspi-config
Current default time zone: 'Asia/Shanghai'
Local time is now: Mon Apr 20 01:18:51 CST 2020.
Universal Time is now: Sun Apr 19 17:18:51 UTC 2020.
pi@nas:~ $ date
Mon 20 Apr 01:18:58 CST 2020
再運行一次腳本。
pi@nas:sudo /nas_backup_scripts/DailyRun.sh
pi@nas:~ $ cat /nas/backup/2020-04-20.log
**********DAILYBACKUP**********
Incremental backup: /nas/backup//2020-04-20/
**********DELETEBACKUP**********
Reserved backups: 2020-04-19 2020-04-19.log 2020-04-20 2020-04-20.log
Deleted backups:
***********DISKREMAIN***********
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 29G 45M 27G 1% /nas/data
/dev/sda1 29G 45M 27G 1% /nas/backup
- 定時任務
crontab是用來提交和管理用戶需要週期性執行的任務。
pi@nas:~ $ sudo crontab -e # -e表示編輯用戶的計時器設置
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
3. /bin/ed
Choose 1-3 [1]: 2
crontab: installing new crontab
# 這裏會打開文件,在文件最後添加
0 2 * * * /nas_backup_scripts/DailyRun.sh
# 順序是分、時、日、月、周、命令
# 這裏表示的是每天2點執行DailyRun.sh
# 直接查看或者修改文件
pi@nas:~ $ sudo cat /var/spool/cron/crontabs/root