【脚本】适用于 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

目录
打赏
0
0
0
0
52
分享
相关文章
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
149 29
|
2月前
|
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
91 28
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
479 23
|
2月前
|
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
291 12
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
92 13
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
168 11
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
169 3
|
2月前
|
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
69 4
|
3月前
|
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
181 25
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等