ฉันมีMinGW (หรือที่เรียกว่า'Git Bash' ) ใน Windows 7 และไฟล์แบตช์ที่รัน rsync เพื่อสำรองไฟล์ในไดรฟ์ภายนอกบนคอมพิวเตอร์ linux ระยะไกล นี่คือไฟล์แบทช์ ( my_rsync_file.bat
)
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
cd ../
REM starting rsync...
bash -c "rsync -avzh -P --stats --timeout=60 --exclude Downloads . 'my_remote_linux_computer@128.95.170.200:/media/my_remote_linux_computer/LaCie/My\ Documents'"
ต่อไปนี้เป็นคำอธิบายแบบบรรทัดต่อบรรทัด:
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
นี่แค่ปล่อยข้อความเพื่อเตือนฉันว่าเกิดอะไรขึ้น
cd ../
การเปลี่ยนแปลงนี้ทำให้ไดเรกทอรีหนึ่งระดับขึ้นไปจากที่ไฟล์แบตช์ (เป็น 'เอกสารของฉัน') ไฟล์แบตช์อยู่ในไดรฟ์ภายนอกบนคอมพิวเตอร์ Windows ของฉัน ฉันต้องการซิงค์โฟลเดอร์ 'My Documents' ทั้งหมดในไดรฟ์ภายนอกนี้ด้วยโฟลเดอร์ชื่อเดียวกันบนไดรฟ์ภายนอกบนคอมพิวเตอร์ linux ระยะไกลของฉัน
REM starting rsync...
เพียงพิมพ์ข้อความอื่น
bash -c "rsync -avz -P --stats --timeout=60 --exclude Downloads . my_remote_linux_computer@128.95.155.200:/media/my_remote_linux_computer/LaCie/My\\ Documents"
bash
: เริ่ม MinGW ซึ่งมีไลบรารี rsync ในตัว
-c
: ไม่แน่ใจว่าสิ่งนี้ทำอะไร
rsync
: ไลบรารีเพื่อซิงค์ไฟล์, มาพร้อมกับ MinGW
-avzh
: a-Archive, v-Verbose, z-Compress, h-Human-readable, นี่เป็นตัวเลือกทั่วไป (เพิ่มเติม: http://linux.die.net/man/1/rsync )
-P
: แสดงความคืบหน้าสำหรับไฟล์ขนาดใหญ่ดังนั้นฉันรู้ว่ามันค้างหรือไม่
--stats
: แสดงสรุปของจำนวนไฟล์และไบต์ที่ถ่ายโอนในตอนท้าย
--timeout=60
: ฆ่ามันหลังจาก 60 วินาทีถ้าไฟล์นั้นถูก
--exclude
ละเว้นให้ละเว้นไฟล์ / ไดเรกทอรีจากการซิงค์ในกรณีนี้ฉันจะยกเว้นไดเรกทอรีที่เรียกว่า 'ดาวน์โหลด'
.
: ระบุให้ซิงค์เนื้อหาทั้งหมดของ 'เอกสารของฉัน' (คาดว่าสิ่งที่ระบุจะแยกออกจากบรรทัดข้างบน)
my_remote_linux_computer
: ชื่อ ของคอมพิวเตอร์ linux ระยะไกลของฉัน (ไม่ใช่ชื่อจริง)
@128.95.155.200
: ที่อยู่ IP ของคอมพิวเตอร์ linux ระยะไกลของฉันจากhttps://www.whatismyip.com/ (ไม่ใช่ที่อยู่ IP ที่แท้จริงของฉัน :)
/media/my_remote_linux_computer/LaCie/My\\ Documents
: เส้นทางไปยังไดเรกทอรีบนคอมพิวเตอร์ linux ระยะไกลของฉันที่ฉันต้องการรับไฟล์ มันเป็นไดรฟ์ภายนอก
โปรดทราบว่าช่องว่างใน "เอกสารของฉัน" ถูกหลบหนีด้วยแบ็กสแลชสองรายการและชื่อเต็มและไดเรกทอรีของปลายทางระยะไกลจะถูกล้อมรอบด้วยเครื่องหมายอัญประกาศคู่
เมื่อฉันเริ่มดับเบิลคลิกที่ไฟล์ bat ฉันได้รับแจ้งให้ใส่รหัสผ่านสำหรับคอมพิวเตอร์ linux ระยะไกลของฉัน เมื่อเสร็จแล้วฉันจะได้รับเอาต์พุตสรุปและได้รับแจ้งให้กดปุ่มใด ๆ เพื่อปิด
-c
พารามิเตอร์จาก bash man: หากมีอ็อพชัน -c อยู่คำสั่งจะอ่านจากสตริง หากมีข้อโต้แย้งหลังจากสตริงพวกเขาจะถูกกำหนดให้กับพารามิเตอร์ตำแหน่งเริ่มต้นด้วย $ 0