ssh loop file dan transfer secara lokal

0

Saya masuk melalui ssh ke server1, sementara di server1 saya ingin mendapatkan file yang terletak di repositori git di server2 dan menyimpannya di server1 untuk melakukan sesuatu dengan mereka (skrip untuk menyimpan ke database)

Repositori git adalah struktur yang cukup dalam. Saya tidak bisa hanya mengkloning repositori karena saya kehabisan ruang. Jadi tentu saja saya ingin mengulang semua file di Server2, dan dengan masing-masing memindahkannya ke server1, lakukan fungsi saya untuk menyimpan ke database, dan kemudian hapus file.

Bagian yang saya mengalami masalah adalah secara berulang mengulangi file untuk diunduh melalui ssh.

di edit: Saya berkomunikasi antara dua server redhat.

pengguna254694
sumber

Jawaban:

0

Ini tidak terlalu elegan, tetapi mudah-mudahan idenya akan tersebar:

ssh localhost -p4444 \
 "find ~/tmp/  -iname \*png -exec \
    sh -c 'echo mkdir -p moo-diles/\`dirname {}\`\;\
           rsync -e \"ssh -p 4444\" localhost:{} moo-files/{}\;\
           rm -i {}' \; "

(...)

mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/tile; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/tile/veins_2.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/tile/veins_2.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/tile/veins_2.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/menu2.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/menu2.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/menu2.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_2.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_2.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_2.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_2.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_2.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_2.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_up_3.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_up_3.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_up_3.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_3.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_3.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/bar_vertical_3.png
mkdir -p moo-diles//home/jaroslav/tmp/eterm/usr/share/Eterm/pix; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_1.png moo-files//home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_1.png; rm -i /home/jaroslav/tmp/eterm/usr/share/Eterm/pix/button_arrow_down_1.png
mkdir -p moo-diles//home/jaroslav/tmp/transcode; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/transcode/track14.png moo-files//home/jaroslav/tmp/transcode/track14.png; rm -i /home/jaroslav/tmp/transcode/track14.png
mkdir -p moo-diles//home/jaroslav/tmp/transcode; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/transcode/closeup.png moo-files//home/jaroslav/tmp/transcode/closeup.png; rm -i /home/jaroslav/tmp/transcode/closeup.png
mkdir -p moo-diles//home/jaroslav/tmp/transcode; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/transcode/track15.png moo-files//home/jaroslav/tmp/transcode/track15.png; rm -i /home/jaroslav/tmp/transcode/track15.png
mkdir -p moo-diles//home/jaroslav/tmp/transcode; rsync -e ssh -p 4444 localhost:/home/jaroslav/tmp/transcode/track10.png moo-files//home/jaroslav/tmp/transcode/track10.png; rm -i /home/jaroslav/tmp/transcode/track10.png

(...)

Apa yang dilakukan di sini dapat disebut "meta programing" karena untuk setiap file yang ditemukan, kita cukup mengulangi lebih banyak perintah untuk dieksekusi. Perintah-perintah ini harus kemudian dieksekusi untuk memproses setiap file. Anda akan bijaksana untuk menempatkan perintah yang masuk dalam sh -c '<here>'skrip di server sebagai gantinya. Dengan begitu Anda tidak akan kehilangan kewarasan saat mencoba melarikan diri dengan benar dan membaca perintah yang panjangnya tiga baris.

Ярослав Рахматуллин
sumber
ok sebenarnya itu terlihat cukup bagus, tapi saya akhirnya memperbaiki masalah saya dengan cara lain - hanya memasang berbagi NFS di mana saya bisa menyimpan data sebanyak yang saya butuhkan.
user254694
Pemikiran yang bagus. Di masa depan, jika Anda tidak memiliki root pada kotak Anda mungkin dapat menggunakan sshfs (FUSE).
Ярослав Рахматуллин