Saya mencoba menggunakan rsync untuk membuat dir remote yang identik dengan versi lokal saya, jadi saya melakukan sesuatu seperti (dengan barang "saya" di bawah diganti dengan sesuai)
rsync -avhe 'ssh -p 7822' --progress --delete \
/mylocaldir myusername@myremotehost:~/myremotedir`
Output dari perintah menunjukkan peringatan tetapi tidak ada pesan kesalahan:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_NUMERIC = "c",
LANG = "fr_FR.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
building file list ...
70 files to consider
Online/index.html
582 100% 0.00kB/s 0:00:00 (xfer#1, to-check=67/70)
sent 2.28K bytes received 48 bytes 665.71 bytes/sec
total size is 919.11K speedup is 394.47
Tetapi ketika saya memeriksa dir remote, tidak ada yang diperbarui. Saya mencobanya beberapa kali. Apa yang terjadi disini ? Setiap bantuan dihargai.
Perbarui, sebagai jawaban atas komentar pertama di bawah ini: di sini adalah isi file / etc / profile saya:
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
echo $-
, saya mengerti himBH
, jadi saya $-
memang berisi i
.
$-
memang mengandung i
shell interaktif. Ini tidak terjadi ketika shell (remote) dijalankan rsync
.
/etc/profile
atau file konfigurasi lainnya.
/etc/profile
(atau apa pun) Anda yang menghasilkan output ketika dijalankan di shell non-interaktif. Ini melanggarrsync
protokol. Pada dasarnya Anda perlu mengidentifikasi perintah-perintah itu, dan menjalankannya hanya ketika$-
berisii
.