求助shell:linux 如何指定时间点,然后从某文件夹中获取这时间之后生成的文件,复制到另个文件夹中

2024-11-15 14:46:04
推荐回答(3个)
回答1:

cd /var/www/html
ls -l
找到5月15日之后的文件
cp xxx /opt/backup/
就行了

可以用awk来做:
思路是,用shell 读取需要的时间,传递给awk。
大概是这个样子,没环境,可能还需要改下
!#/bin/sh

if ($#=1) then
echo "some promt"

else
ls -l /var/www/html | awk -v date=$1 '$x>$date' {system("cp "$NF" /opt/backup")}'

fi

调用的时候
./xxx 需要的时间

回答2:

具体确定日期我不知道怎么做. 但是如果想要复制修改时间在20天之内的. 应该用如下shell命令.
find /var/www/html -type f -mtime 20 -exec cp {} /opt/backup/ \

回答3:

#!/bin/sh

show_usage() {
    echo "Usage: backup.sh src_folder bak_folder bak_date"
    echo ""
    echo "src_folder - source folder to backup"
    echo "bak_folder - backup folder"
    echo "bak_date   - backup date in YYYYMMDD format"
}


if [ $# -ne 3 ]; then
    show_usage
    exit 1
fi

src_folder="$1"
bak_folder="$2"
bak_date="$3"

bak_file="$bak_folder/backup.tar" # 这里把备份文件名固定为backup.tar了,你可以根据需要做些修改
if [ -f $bak_file ]; then
    rm $bak_file
fi

tmpfile="`mktemp`"
touch -t ${bak_date}0000 $tmpfile
cd $src_folder
find . -name "*.py" -newer $tmpfile -exec tar rvf $bak_file {} \;
rm $tmpfile

echo "backup file: $bak_file"
ls -l $bak_file


备份时运行命令:

backup.sh /var/www/html /opt/backup 20130515