bash
  • backup
  • rsync
  • 2016-04-03 13 views 0 likes 
    0

    プロジェクトディレクトリをバックアップするためのbashスクリプトを作成しましたが、除外オプションは機能しません。bashスクリプトでrsyncからディレクトリを除外できない

    backup.sh

    #!/bin/sh 
    DRY_RUN="" 
    if [ $1="-n" ]; then 
        DRY_RUN="n" 
    fi 
    
    OPTIONS="-a"$DRY_RUN"v --delete --delete-excluded --exclude='/bin/'" 
    SOURCE="/home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system/" 
    DEST="/home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system_backup" 
    
    rsync $OPTIONS $SOURCE $DEST 
    

    私は端末に個別のコマンドを実行しています、それが動作します。

    vikram:student_information_system$ rsync -anv --delete --delete-excluded --exclude='/bin/' /home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system/ /home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system_backup 
    sending incremental file list 
    deleting bin/student_information_system/model/StudentTest.class 
    deleting bin/student_information_system/model/Student.class 
    deleting bin/student_information_system/model/ 
    deleting bin/student_information_system/ 
    deleting bin/ 
    ./ 
    .backup.sh.swp 
    backup.sh 
    backup.sh~ 
    
    sent 507 bytes received 228 bytes 1,470.00 bytes/sec 
    total size is 16,033 speedup is 21.81 (DRY RUN) 
    vikram:student_information_system$ 
    
    +1

    ところで:[ "N" $ 1 =]'置き換えます。 – Cyrus

    答えて

    2

    (このanswerで説明する)問題を引き起こしていた除外するディレクトリの名前の周りの単一引用符。
    また、すべてのオプションをhereのように配列に格納しました。

    コメントに@Cyrusが示唆するように変数を二重引用符で囲んで、オプションを配列に格納すると、一重引用符が削除され、問題が解決しました。
    #!/bin/sh#!/bin/bashに変更する必要がありました。
    更新スクリプト: - あなたのコードの残りの部分に ``によって[ "$ 1" = "-n"] `と引用変数

    #!/bin/bash 
    DRY_RUN="" 
    if [ "$1" = "-n" ]; then 
        DRY_RUN="n" 
    fi 
    
    OPTS=("-a""$DRY_RUN""v" "--delete" "--delete-excluded" "--exclude=/bin/") 
    SRC="/home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system/" 
    DEST="/home/vikram/Documents/sem4/oop/lab/java_assignments/student_information_system_backup" 
    
    echo "rsync ${OPTS[@]} $SRC $DEST" 
    rsync "${OPTS[@]}" "$SRC" "$DEST" 
    
    関連する問題