小韓寫Shell 誤刪檔案後的恢復

2021-10-09 15:29:38 字數 1868 閱讀 7022

前言

使用指令碼刪除檔案,刪除的同時指令碼對刪除的檔案進行了備份。倘若我們是誤刪除的那麼可以到達指定的備份目錄下選擇恢復。

一、指令碼內容

[root@hya shell]# vim rm.backup.sh

#!/bin/bash

name=$1

now=`date +%y%m%d%h%m`

read -p "你確定要刪除當前的檔案或者資料夾嗎 yes|no:" inpt

read -p "請在確定一次 是否刪除檔案或者資料夾 yes|no:" input

if [ $input == "yes" ] ||[ $input == "y" ];then

mkdir -p /data/.$now

#### 判斷rsync是否已經安裝

rsync=`rpm -qa rsync |wc -l`

if [ $rsync -ne 0 ];then

echo "現在開始備份資料"

else

#### 如果沒有rsync就先安裝rsync並啟動

yum install xinetd rsync -y

useradd -s /sbin/nologin -m rsync

mkdir -p /data

chown -r rsync.rsync /data/

echo "rsync_backup:123456" >/etc/rsync.password

chmod 600 /etc/rsync.password

fi rsync --daemon

#### 判斷要刪除的檔案是否存在

if [ -f $1 ] || [ -d $1 ];then

### 如果要刪除的檔案存在則開始備份

rsync -ar $1 /data/.$now/$1/

echo "資料備份成功"

else

echo "檔案不存在,請重新確認檔案名字"

exit 1

fiecho "開始刪除資料"

/bin/rm -rf $1

echo "檔案刪除成功,若需要恢復請到 /data/.$now/路徑下恢復"

elif [ $input == "no" ] ||[ $input == "n" ]

then

exit 0

else

echo "請輸入yes|no"

exit

fi

二、實操營

[root@hya shell]# chmod +x rm.backup.sh   #授權 (給指令碼執行的許可權)

[root@hya ~]# cd /etc/

[root@hya etc]# sh /usr/local/shell/rm.backup.sh /etc/

你確定要刪除當前的檔案或者資料夾嗎 yes|no:yes

請在確定一次 是否刪除檔案或者資料夾 yes|no:yes

現在開始備份資料

資料備份成功

開始刪除資料

檔案刪除成功,若需要恢復請到 /data/.202006291515/路徑下恢復

##檢視是否刪除

[root@hya etc]# ls -l

總用量 0

恢復[root@hya etc]# mv /data/.202006291515/etc/* /etc/

[root@hya etc]# ls

etc

總結

此指令碼可用於日常的檔案誤刪除,一般情況下都可以。

AIX系統 dev null檔案誤刪後的恢復

dev null是個特殊的字元型裝置檔案,它是個虛擬的裝置,可以形象的理解為乙個無底黑洞,吞噬萬物的黑洞,且永遠填不滿。對系統非常重要,不需要儲存的資訊都可以丟到 dev null。testterm1 ls l dev null crw rw rw 1 root system 2,2 jul 31 ...

AIX系統 dev null檔案誤刪後的恢復

dev null是個特殊的字元型裝置檔案,它是個虛擬的裝置,可以形象的理解為乙個無底黑洞,吞噬萬物的黑洞,且永遠填不滿。對系統非常重要,不需要儲存的資訊都可以丟到 dev null。testterm1 ls l dev null crw rw rw 1 root system 2,2 jul 31 ...

誤刪除了Oracle的dbf檔案後的解決方法

問題描述 誤刪除oracle資料庫的dbf檔案,在啟動和關閉資料庫是會提示錯誤。ora 01157 無法標識 鎖定資料檔案 ora 01110 資料檔案 x1000 1.dbf 未找到 解決方法 1 sql alter system set allow resetlogs corruption tr...