Thuta Learning
ရှာဖွေရန်
AdvancedDevOps & Toolsbeginner

scp & rsync — ဖိုင်ကို Remote Server ဆီပို့ခြင်း

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • scp & rsync — ဖိုင်ကို Remote Server ဆီပို့ခြင်း ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • Terminal ထဲမှာ ကိုယ်တိုင် command ကို စမ်းသုံးတတ်အောင် လုပ်မယ်
  • Real server/project မှာ ဒီ command ဘယ်လို အသုံးဝင်သလဲ ချိတ်မြင်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

scp (secure copy) က SSH protocol အပေါ် အခြေခံပြီး ဖိုင်ကို local machine နဲ့ remote server ကြား copy လုပ်ပေးပါတယ် — scp local-file.txt user@server:/remote/path/ ပုံစံနဲ့ upload လုပ်, scp user@server:/remote/file.txt . ပုံစံနဲ့ download လုပ်ပါတယ် (: ရှေ့မှာ server info, နောက်မှာ path)။ scp -r ကတော့ folder တစ်ခုလုံး copy လုပ်ဖို့ (cp -r, rm -r ရဲ့ pattern အတိုင်းပါပဲ)။ rsync ကတော့ ပိုအဆင့်မြင့်ပါတယ် — ဖိုင်တွေ ပြောင်းလဲသွားတဲ့ အပိုင်းကိုပဲ ပြန်ကူးပေးတာမို့ (delta transfer) ဖိုင်ကြီးတွေ ထပ်ခါထပ်ခါ sync လုပ်ရင် scp ထက် အများကြီး မြန်ပါတယ်, --delete flag ထည့်ရင် destination ထဲက source မှာမရှိတော့တဲ့ ဖိုင်ကိုပါ ဖျက်ပေးပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Website ဖိုင်တွေကို local machine ကနေ server ဆီ တစ်ကြိမ်ချင်း upload လုပ်ချင်ရင် scp ကို လွယ်ကူစွာ သုံးလို့ရပါတယ် — scp -r ./website user@server:/var/www/mysite။ Project folder ကို server ဆီ ပုံမှန် sync ထားချင်ရင် (deploy workflow မှာ) rsync -avz ./project/ user@server:/home/user/project/ ကို သုံးလေ့ရှိပါတယ် (-a = archive mode, permission/timestamp ထိန်း, -v = verbose, -z = compress) — file ပြောင်းသွားတဲ့ အပိုင်းလေးလေးကိုပဲ ပြန်ပို့တာမို့ deploy time လျော့ချနိုင်ပါတယ်။

အတူတူ terminal ထဲ စမ်းမယ်

bash
scp report.pdf alice@203.0.113.10:/home/alice/
scp -r ./website alice@203.0.113.10:/var/www/mysite
scp alice@203.0.113.10:/home/alice/backup.tar.gz .
rsync -avz ./project/ alice@203.0.113.10:/home/alice/project/
You should see
scp command run ပြီးနောက် progress percentage/speed ပြသပြီး ဖိုင်ကို destination ဆီ ရောက်သွားမည်။

၅ မိနစ် စမ်းကြည့်

Local file တစ်ခုကို scp syntax (server IP အစစ်မလို, syntax ကိုပဲ ကျင့်) ဖြင့် remote path ဆီ ပို့မယ့် command တစ်ကြောင်း ကိုယ်တိုင် ရေးကြည့်ပါ။

သတိလေးတစ်ချက်

rsync --delete ကို destination path မှားနေတဲ့အချိန်မှာ run ရင် server ပေါ်က ဖိုင်များစွာ အလိုအလျောက် ဖျက်ခံရနိုင်ပါတယ် — --delete flag သုံးခင် dry-run (rsync --dry-run) ဖြင့် ဘာဖြစ်မလဲ အရင် preview ကြည့်ပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • : (colon) ကို scp command ထဲမှာ ချန်ထားပြီး local path လို့ ရောနားလည်ခံရခြင်း (colon က remote path ရဲ့ signal ဖြစ်)
  • rsync ရဲ့ trailing slash (/) ကို folder path ရဲ့ အဆုံးမှာ ထားရမလား၊ မထားရမလား ရောသွားခြင်း — trailing slash ရှိ/မရှိအလိုက် behavior ကွာနိုင်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

Local file တစ်ခုကို scp syntax (server IP အစစ်မလို, syntax ကိုပဲ ကျင့်) ဖြင့် remote path ဆီ ပို့မယ့် command တစ်ကြောင်း ကိုယ်တိုင် ရေးကြည့်ပါ။

You'll know it worked when: scp command run ပြီးနောက် progress percentage/speed ပြသပြီး ဖိုင်ကို destination ဆီ ရောက်သွားမည်။

scp & rsync — ဖိုင်ကို Remote Server ဆီပို့ခြင်း | Thuta Learning