mac|linux 防范rm -rf數(shù)據(jù)丟失
此處標(biāo)題黨
之前見有同事誤刪了一個(gè)大目錄(rm -rf),內(nèi)部數(shù)據(jù)都丟了,特寫此文章。
分析了一下,為了防止誤刪方便找回,可以使用mv命令代替刪除(邏輯刪除),
但是rm 命令是/bin/目錄下的,為只讀文件。
故想到使用 alisa 命令做 rm命令的別名。
1.準(zhǔn)備腳本
首先,寫了一個(gè)腳本,rm.sh,邏輯大概是把文件移動(dòng)到垃圾桶目錄(``)。
可以通過wget https://semfreud.github.io/static/file/rm.sh下載。
#!/usr/bin/env bash
#垃圾桶目錄
TRASH=/Users/`whoami`/.Trash
mv_single_file(){
if test ! -z ${1}; then
var1_top_1=`echo ${1:0:1}`
curr_path=${1}
if test ${var1_top_1} != "/" ; then
curr_path=`pwd`/${1}
fi
full_path=${curr_path}
if test -f ${curr_path}; then
full_path=`echo ${curr_path%/*}`
trash_path=${TRASH}${full_path}
elif test -d ${curr_path}; then
trash_path=${TRASH}${full_path}/..
fi
mkdir -p ${trash_path}
mv ${curr_path} ${trash_path}/
fi
}
var1=${1}
echo ${var1}
for i in ${var1};
do
mv_single_file ${i}
done
2.移動(dòng)腳本并賦權(quán)限
根據(jù)自身情況來修改腳本垃圾桶地址或部分邏輯,
然后復(fù)制將腳本文件移動(dòng)到/usr/local/bin/下.
chmod 777 rm.sh && mv rm.sh /usr/local/bin/rm.sh
3.編譯bash_profile文件
再打開~/.bash_profile 設(shè)置rm別名 (mac可以在該文件設(shè)置,linux請(qǐng)?jiān)?code>~/.bash_rc)
echo "alisa rm='rm.sh'" >> ~/.bash_profile && source ~/.bash_profile
source之后,可以試試使用rm命令(建議使用測(cè)試文件)。
4.增加定時(shí)任務(wù)
看個(gè)人需求 使用 crontab增加定時(shí)任務(wù)
每天零點(diǎn)清空一次
0 0 * * * /bin/rm -rf /tmp/Trash/* (垃圾桶地址記得更改)
5.問題說明
經(jīng)過測(cè)試,
操作文件正常
操作目錄正常,
批量操作使用通配符'*'的話需要加 '\*'
例如:
刪除 某個(gè)目錄`*log`文件
rm \*log