代码之家  ›  专栏  ›  技术社区  ›  Arshdeep

bash脚本代码帮助创建多个文件夹的zip/tar

  •  12
  • Arshdeep  · 技术社区  · 16 年前

    我是bash中的一个新手,以前从来没有编码过,但是这个任务被卡住了,所以需要摆脱它。 我需要制作bash脚本来制作一个包含多个dir的压缩文件。

    像-

    /home/code/bots/
    /var/config/
    .
    .
    .
    /var/system/
    

    所有文件都将压缩为单个文件/var/file/bkup.[zip][tar.gz]

    提前谢谢

    3 回复  |  直到 16 年前
        1
  •  37
  •   John Kugelman Michael Hodel    16 年前
    # tar: (c)reate g(z)ip (v)erbose (f)ile [filename.tar.gz] [contents]...
    tar -czvf /var/file/bkup.tar.gz /home/code/bots /var/config /var/system
    
    # zip: (r)ecursive [filename.zip] [contents]...
    zip -r /var/file/bkup.zip /home/code/bots /var/config /var/system
    
        2
  •  3
  •   ire_and_curses    16 年前

    正如您所描述的,问题不需要bash脚本,只是 tar .

    tar cvzf /var/file/bkup.tar.gz /home/code/bots/ /var/config/ . . . /var/system/
    
        3
  •  3
  •   Dennis    16 年前

    您可以为它创建一个bash文件,如果您打算在cronjob中运行它,并预先添加一些其他命令,如mysqldump。

    您需要创建一个类似backup.sh的文件,其中包含以下内容 (您可能需要更改bash的路径,您可以找到bash whereis bash )

    
    #!/bin/bash
    # 
    # Backup script
    # 
    
    # Format: YEAR MONTH DAY - HOUR MINUTE SECOND
    DATE=$(date +%Y%m%d-%H%M%S)
    
    # MySQL backup file
    MYSQLTARGET="/var/file/backup-mysql-$DATE.sql"
    
    # Target file
    TARTARGET="/var/file/backup-$DATE.tar.gz"
    
    # MySQL dump
    # you cannot have a space between the option and the password. If you omit the password value 
    # following the --password or -p option on the command line, you are prompted for one.
    mysqldump -u root -ppassword --all-databases > $MYSQLTARGET
    
    tar -czvf $TARTARGET $MYSQLTARGET /home/code/bots /var/config /var/system
    
    

    这是未测试的代码。这只是一个bash脚本如何在当前回复上下文中工作的示例。