tar 打包压缩
tar -czf archive.tar.gz dir/ # gzip压缩打包tar -cjf archive.tar.bz2 dir/ # bzip2压缩tar -cJf archive.tar.xz dir/ # xz压缩tar -czf archive.tar.gz --exclude='*.log' dir/ # 排除文件tar -czf archive.tar.gz --exclude='.git' dir/ # 排除目录tar -czf - dir/ | ssh user@host "cat > archive.tar.gz" # 远程备份tar -xzf archive.tar.gz # 解压tar -xzf archive.tar.gz -C /path/ # 解压到指定目录tar -tzf archive.tar.gz # 查看压缩包内容tar -xzf archive.tar.gz file # 解压单个文件
常用压缩格式对比:
zip/unzip
zip -r archive.zip dir/ # 压缩zip archive.zip file1 file2 # 压缩多个文件zip -r archive.zip dir/ -x "*.log" # 排除文件unzip archive.zip # 解压unzip -l archive.zip # 查看内容unzip archive.zip -d /path/ # 解压到指定目录unzip -o archive.zip # 覆盖解压
其他压缩工具
gzip file # gzip压缩gunzip file.gz # 解压bzip2 file # bzip2压缩bunzip2 file.bz2 # 解压xz file # xz压缩unxz file.xz # 解压7z a archive.7z dir/ # 7zip压缩7z x archive.7z # 解压7zip
rsync 增量备份
rsync -avz src/ dst/ # 本地备份rsync -avz --delete src/ dst/ # 完全同步(删除多余)rsync -avz --backup --backup-dir=/backup/old/ src/ dst/ # 备份模式rsync -avz --link-dest=/backup/prev/ src/ dst/ # 增量备份rsync -avz -e "ssh -p 2222" src/ user@host:/dst/ # 通过SSH
dd 磁盘镜像
dd if=/dev/sda of=/backup/sda.img bs=4M # 磁盘镜像dd if=/backup/sda.img of=/dev/sda bs=4M # 恢复镜像dd if=/dev/sda | gzip > /backup/sda.img.gz # 压缩镜像gzip -dc /backup/sda.img.gz | dd of=/dev/sda bs=4M # 解压恢复dd if=/dev/zero of=test bs=1M count=1000 oflag=direct # 测试写速度
定时备份脚本模板
#!/bin/bashBACKUP_DIR="/backup"DATE=$(date +%Y%m%d_%H%M%S)DB_NAME="mydb"DB_USER="root"DB_PASS="password"# MySQL备份mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz# 文件备份tar -czf $BACKUP_DIR/app_${DATE}.tar.gz /var/www/app/# 保留最近30天find $BACKUP_DIR -name "*.gz" -mtime +30 -delete
上一篇:性能分析下一篇:Shell脚本常用语法