创建附带文件的shell脚本(自解压与合并文件)

Consider that you need to perform a routine in a remote server, where you need to decompress a tar.tz and execute a list of commands on this data. One alternative is send the tar.gz file to the remote server throught a ftp or scp and then log in the remote server and run a shell script or run manually a list of commands. Recall Java JRE setup, they use script.bin that comes with an embeeded tar.gz, which is self-extracted in the beginning of script execution. To build the self-extraction script I follow a tutorial published by Stuart Wells, which consists in four steps:

  1. Create/identify a tar.gz file that you wish to become self extracting.
  2. > cat extract.sh
    #!/bin/bash
    echo "Extracting file into `pwd`"
    # searches for the line number where finish the script and start the tar.gz
    SKIP=`awk '/^__TARFILE_FOLLOWS__/ { print NR + 1; exit 0; }' $0`
    #remember our file name
    THIS=`pwd`/$0
    # take the tarfile and pipe it into tar
    tail -n +$SKIP $THIS | tar -xz
    # Any script here will happen after the tar file extract.
    echo "Finished"
    exit 0
    # NOTE: Don't place any newline characters after the last line below.
    __TARFILE_FOLLOWS__
  3. Concatenate The script and the tar file together.
    > cat extract.sh example.tar.gz > example.sh
    > chmod +x example.sh
  4. Now test in another directory.
    > cp example.sh /tmp
    > cd /tmp
    > ./example.sh

     

发表评论

电子邮件地址不会被公开。

*