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

目录
相关文章
|
7天前
|
Java Linux Maven
Linux环境下maven的安装
Linux环境下maven的安装
19 0
|
7天前
|
监控 Linux Perl
【专栏】Linux 命令小技巧:显示文件指定行的内容
【4月更文挑战第28天】本文介绍了Linux中显示文件指定行内容的方法,包括使用`head`和`tail`命令显示文件头尾部分,利用`sed`的行号指定功能以及`awk`处理文本数据。文章还列举了在代码审查、日志分析和文本处理中的应用场景,并提醒注意文件编码、行号准确性及命令组合使用。通过练习和实践,可以提升Linux文本文件处理的效率。
|
6天前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
14 0
Linux Bash 脚本中的 IFS 是什么?
|
2天前
|
Linux 开发工具 Perl
|
5天前
|
Linux
Linux文件误删恢复
请注意,成功恢复误删文件的机会取决于多个因素,包括文件被删除后经过的时间、磁盘的使用情况以及您采取的操作。因此,尽可能快速采取行动,并避免在误删文件所在的磁盘上写入新数据,以提高恢复成功的可能性。
9 0
|
6天前
|
存储 监控 Linux
|
6天前
|
安全 Linux
【亮剑】如何在Linux使用 chattr 命令更改文件或目录的扩展属性?
【4月更文挑战第30天】`chattr`是Linux中用于管理文件和目录扩展属性的命令,影响文件系统处理方式。常用属性包括:`a`(追加)、`i`(不可变)、`s`(安全删除)和`S`(同步更新)。通过`chattr [选项] <模式> <文件或目录>`设置属性,如`chattr +i <文件名>`使文件不可变,`-i`移除不可变属性。`lsattr`用于查看属性。注意,只有root用户有权更改属性,不是所有文件系统都支持所有属性,且更改关键文件属性前应备份。`chattr`有助于提升系统安全性和数据保护。
|
6天前
|
Linux 开发者
【亮剑】Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile
【4月更文挑战第30天】本文介绍了Linux系统中的四种文件锁定机制:flock、fcntl、lockfile和flockfile,用于多进程环境下协调共享资源访问,防止数据损坏和竞争条件。flock适合脚本,fcntl提供底层灵活性,lockfile用于管理锁定文件,flockfile则结合两者功能。选择锁定策略时需考虑应用场景,如脚本可选flock,复杂需求则用fcntl。理解并正确使用这些工具对保证系统稳定性和数据一致性至关重要。
|
6天前
|
存储 算法 Linux
【Linux】文件打包解压_tar_zip
【Linux】文件打包解压_tar_zip
16 0
【Linux】文件打包解压_tar_zip
|
6天前
|
Linux 开发者
【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc
【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc
17 1