技术分享
Raspberry Pi 3 B+ NAS以及自动备份和邮件提醒
2020-08-10
一、准备树莓派
准备系统
在这里下载最新的镜像,或者在这里下载历史镜像。
可以选择不带桌面最精简的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:~ $ ifconfigeth0: 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:~ $ ifconfigeth0: 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 # 输入yCreating 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: doneWriting inode tables: doneCreating journal (32768 blocks): doneWriting 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系统守护进程,在用户需要使用该文件系统时才会动态挂载,从而节约了网络资源和服务器硬件资源,也避免了在范围磁盘时设备没有挂载的问题。
# 安装 autofspi@nas:~ $ sudo apt install autofs# 创建挂载点 /naspi@nas:~ $ sudo mkdir /nas# 设置使用时自动挂载设备# 修改 /etc/auto.masterpi@nas:~ $ sudo vi /etc/auto.master# 在文件最后添加/nas /etc/auto.misc# 修改 /etc/auto.miscpi@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 # 使用时自动挂载datapi@nas:/nas/data $ ls /nas/ data pi@nas:/nas/data $ cd /nas/backup # 使用时自动挂载backuppi@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.shBACKUPDIR=/nas/backup/# backups of January 1st for the last 5 yearsfunction 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 monthsfunction 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 Sundaysfunction 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-mailxpi@nas:~ $ sudo apt-get install heirloom-mailx# 修改配置pi@nas:~ $ sudo vi /etc/s-nail.rc# 在最后添加set from="your_email@163.com"set smtp="smtps://smtp.163.com:465"set smtp-auth-user="your_email@163.com" # 这里我发送和接收用同一个邮箱,不然可能会被认为是垃圾邮件set smtp-auth-password="your_password" # 网易邮箱使用的是授权码,在网页邮箱里设置set smtp-auth=login
发送邮件
测试配置是否成功。
pi@nas:~ $ echo "test" | heirloom-mailx -s "TEST" "your_email@163.com"
六、定时执行
执行脚本
新建了一个脚本DailyRun.sh
,调用备份DailyBackup.sh
、删除备份DeleteOldBackup.sh
、检查磁盘容量CheckDiskRemain.sh
,并将log以邮件形式发送出去。
#!/bin/bash# CheckDiskRemain.shDATADIR=/nas/data BACKUPDIR=/nas/backup# 简单地使用df显示磁盘空间并匹配出/nas/data和/nas/backupdf -h | grep -e 'Filesystem' -e ${DATADIR} -e ${BACKUPDIR}
#!/bin/bash# DailyRun.shDATADIR=/nas/data/ BACKUPDIR=/nas/backup/ SCRIPTDIR=/nas/data/backup_scripts/ TODAY=$(date +%Y-%m-%d)LOGFILE=${BACKUPDIR}/${TODAY}.log EMAIL="haydnliao@163.com"if [[ -f ${LOGFILE} ]];then rm ${LOGFILE}fi# 暂存标准输出和错误输出exec 3>&1exec 4>&2# 将标准输出和错误输出重定向到log文件exec 1>>${LOGFILE}exec 2>>${LOGFILE}# 调用相关脚本并将打印信息输出到log文件echo "**********DAILYBACKUP**********"${SCRIPTDIR}/DailyBackup.shecho -e "\n**********DELETEBACKUP**********"${SCRIPTDIR}/DeleteOldBackup.shecho -e "\n***********DISKREMAIN***********"${SCRIPTDIR}/CheckDiskRemain.shecho -e "\n"# 恢复标准输出和错误输出exec 1>&3exec 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:~ $ dateSun 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:~ $ dateMon 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

- 标签:
-
网络安全