rsync kegagalan berbahaya

1

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
Ewan Delanoy
sumber
1
Anda memiliki perintah di /etc/profile(atau apa pun) Anda yang menghasilkan output ketika dijalankan di shell non-interaktif. Ini melanggar rsyncprotokol. Pada dasarnya Anda perlu mengidentifikasi perintah-perintah itu, dan menjalankannya hanya ketika $-berisi i.
Satō Katsura
@ SatōKatsura Ketika saya melakukannya echo $-, saya mengerti himBH, jadi saya $-memang berisi i.
Ewan Delanoy
Anda $-memang mengandung ishell interaktif. Ini tidak terjadi ketika shell (remote) dijalankan rsync.
Satō Katsura
@ SatōKatsura Jadi, dalam komentar Anda di atas, yang Anda maksud adalah remote / etc / profile, bukan yang lokal?
Ewan Delanoy
Saya merujuk pada sesuatu dalam urutan startup dari remote shell Anda. Itu mungkin /etc/profileatau file konfigurasi lainnya.
Satō Katsura

Jawaban:

2

rsyncsedang berjalan, sehingga pesan kesalahan lokal tidak kritis. Sebagai gantinya, saya menduga bahwa dua definisi direktori Anda tidak seperti yang Anda inginkan, dan Anda mungkin mencari di tempat yang salah untuk file.

Anda memiliki sumber /mylocaldirdan tujuan ~/myremotedir. Ini akan dibuat ~/myremotedir/mylocaldirpada target, dan di situlah file akan ditempatkan.

Jika Anda ingin konten yang /mylocaldirakan disalin ~/myremotedirAnda perlu memberikan trailing /pada direktori sumber, seperti ini:

rsync -avh -e 'ssh -p 7822' --progress --delete \
    /mylocaldir/ myusername@myremotehost:myremotedir

NB Saya sudah membagi perintah menjadi dua baris agar mudah dibaca. Seperti ditulis sintaksis shell yang valid, tetapi hapus \karakter pada akhir baris pertama dan bergabung bersama-sama jika Anda suka.


Pesan kesalahan perl tentang lokal akan datang dari beberapa program yang dieksekusi sebagai bagian dari proses login Anda. Mungkin path_helper, yang tampaknya merupakan aplikasi MacOS jadi saya tidak bisa memberi tahu Anda tentang pentingnya atau jika tidak berkomentar, atau bisa juga sesuatu di dalamnya /etc/bashrc.

Daripada mencoba mengidentifikasi aplikasi yang menyinggung, opsi lain, tentu saja, adalah menginstal file lokal Prancis pada sistem target Anda, sehingga kesalahan tidak lagi dipicu.

roaima
sumber
Terimakasih banyak! Setiap tebakan Anda benar-benar benar (tetapi Anda sudah tahu itu, bukan? :-)), dan sekarang saya menambahkan garis miring yang hilang itu berfungsi dengan baik. Bisakah Anda jelaskan sedikit tentang cara menginstal file lokal di Mac saya?
Ewan Delanoy
Ah ... Dilihat dari beberapa jawaban di sini di MSE, seperti stackoverflow.com/questions/7165108/… dan stackoverflow.com/questions/9991603/add-a-locale-in-mac-osx , ini bukan masalah yang sederhana . Saya akan mengajukannya sebagai pertanyaan terpisah
Ewan Delanoy