【脚本】适用于 linux 环境的文件版本管理小脚本

简介: 【脚本】适用于 linux 环境的文件版本管理小脚本

需求提出



在公司使用svn、perforce等版本管理工具。对于多人共享的文件, 我有以下需求:


  •    我不想频繁check in或submit改动到版本库,防止影响别人工作;


  •    但我每修改一点都要及时备份,防止误删、未保存等误操作;


  •    希望能够把改动的文件备份到较为安全的路径,至少不要在改动文件当前目录;


  •    希望能够有多个备份进行容灾;


  •    备份后的文件希望有时间戳展示改动时间,希望有相关改动描述。





脚本特性


为此,分享一个我多年前写的文件备份小脚本,除满足以上需求外,还支持以下feature:


  •    支持文件夹内容备份


  •    备份文件路径在源路径前添加备份文件夹的路径,比如源路径为/home/file1.c,备份文件夹路径为/backup,则备份后的文件路径在/backup/home/file1.c


  •    backup.log内存储备份信息,需要手动提供description,自动添加时间戳及文件的源路径及备份路径,在vim内可g + f直达。


  •    考虑到个人手动备份次数不会太多,所有备份共享同一个backup.log


  •    backup.log多地保存,并ln软链到备份文件所在目录





脚本


脚本名backup.sh,为便于使用请在~/.bashrc中添加 alias backup='~/script/backup.sh'



#! /bin/sh
# usage: backup file "your description"
# script_name: backup.sh
# alias backup '~/script/backup.sh'
tar=$1
description=$2
src=$(pwd)
dst1=~/backup
dst2=/proj/muhe/backup
timestamp=$(date +%Y-%m-%d_%H:%M:%S)
timestamp2=$(date +%Y%m%d%H%M%S)
tarbak=$tar.$timestamp2
genlog() {
  log=$1
  echo "------------------------------------------------------" >> $log
  echo "Description: $description" >> $log
  echo "Time Stamp : $timestamp  " >> $log
  echo "From       : $src/$tar   " >> $log
  echo "To         : $dst/$tarbak" >> $log
  echo "                         " >> $log
}
backup2path() {
  dst=$1$src
  if [ ! -d $dst ]; then
    mkdir -p $dst
  fi
  cp -rf $src/$tar $dst/$tarbak
  genlog $dst/$tar.log
  genlog $1/backup.log
}
main() {
  backup2path $dst1
  backup2path $dst2
  if [ ! -f backup.log ]; then
    ln -s $dst1/backup.log backup.log
  fi
}
main

以上脚本中备份到两地,如需更多备份,可在dst2后追加dstN,并在main函数中添加backup2path $dstN

目录
相关文章
|
4天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
22 5
|
5天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
15 6
|
5天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
21 5
|
6天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
17 4
|
5天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
19 3
|
5天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
17 3
|
11天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
33 2
|
10天前
|
缓存 监控 Linux
|
13天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
13天前
|
Linux Shell 数据库
文件查找是Linux用户日常工作的重要技能介绍了几种不常见的文件查找方法
文件查找是Linux用户日常工作的重要技能。本文介绍了几种不常见的文件查找方法,包括使用`find`和`column`组合、`locate`和`mlocate`快速查找、编写Shell脚本、使用现代工具`fd`、结合`grep`搜索文件内容,以及图形界面工具如`Gnome Search Tool`和`Albert`。这些方法能显著提升文件查找的效率和准确性。
34 2