Saya mencoba menyinkronkan folder menggunakan rsync melalui jaringan lokal saya dari komputer di depan saya ke komputer tujuan.
#!/bin/bash
echo "This script will sync from my Macbook Dropbox/scripts/ folder to [email protected] @ Norms house"
OPTIONS="--recursive --ignore-existing --progress"
SRC_DIR="~/Dropbox/scripts/"
DST_DIR="[email protected]:~/scripts/"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"
Untuk memberi diri saya hak menulis
chmod +x nameofscript.sh
Saat saya menjalankannya, hasilnya:
rsync: --recursive --ignore-existing --progress: unknown option
Bagaimana cara menyimpan opsi ini dengan benar dan menjalankannya sebagai skrip?
Jawaban yang Diterima:
Dengan mengutip "$OPTIONS"
, Shell meneruskannya ke rsync sebagai string tunggal, jadi rsync mencoba menemukan satu opsi bernama "--recursive --ignore-existing --progress"
, yang jelas tidak ada, karena ini adalah tiga opsi terpisah.
Ini akan memperbaikinya untuk Anda:
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
Opsi yang lebih baik mungkin menggunakan bash array untuk menyimpan opsi Anda.
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
Keuntungan menggunakan array adalah Anda dapat memperkenalkan item yang menyertakan spasi, jika diperlukan.