ฉันจะแยกไฟล์เป็นค่าเริ่มต้นด้วย rsync ได้อย่างไร


12

ฉันจะแยกไฟล์เป็นค่าเริ่มต้นด้วย rsync ได้อย่างไร นี่คือวิธีที่ rsync ไวยากรณ์ปกติของฉันเริ่มต้น:

rsync --exclude ".ht*" --exclude "error_log" --exclude ".DS*" --exclude "old" ...

ฉันเคยเห็นการกล่าวถึงการกำหนดค่า/etc/rsyncd.confไฟล์จำนวนมากแต่อาจจะดีกว่าสำหรับ daemon มากกว่าคำสั่ง rsync

เป็นไปได้ไหมที่จะมีการยกเว้นค่าเริ่มต้นสำหรับ rsync เมื่อถูกเรียกจากบรรทัดคำสั่งเช่นในไวยากรณ์เริ่มต้นของฉันด้านบน

คำตอบ:


10

เพิ่มการแยกของคุณไปยังไฟล์จากนั้นใช้ --exclude-from = / path / to /lude_file

เช่น

# cat rsync.excludes
.ht*
error_log
.DS*
old
...

# rsync --exclude-from=rsync.excludes

1
ดูเหมือนว่าไวยากรณ์คือ--exclude-fromและไม่ใช่--exclude-fileแต่อย่างอื่นนี้น่าจะเป็นตั๋ว ขอบคุณ!
cwd

5

ไม่ไม่มีrsyncไฟล์กำหนดค่าเริ่มต้นที่จะอ่านเมื่อเรียกใช้ ที่ดีที่สุดที่คุณสามารถทำได้คือสิ่งที่ @ frogstarr78 กล่าวและสร้างแฟ้มข้อความที่มีรูปแบบชื่อไฟล์และไดเรกทอรีที่จะแยกออกจากนั้นชี้ไปกับrsync--exclude-from=filename


2
rsync does not have a default configuration file- น่าผิดหวัง
cwd

3

ในขณะที่ rsync ไม่อนุญาตให้คุณตั้งค่าตัวเลือกเริ่มต้นคุณสามารถสร้างสคริปต์ตัวคลุมและวางไว้ใน $ PATH ของคุณได้สูงกว่าไบนารี rsync

นี่คือเสื้อคลุม rsync ของฉันที่อาศัยอยู่ ~/bin/rsync

#!/bin/sh

# Set path to the rsync binary
RSYNC=/usr/bin/rsync

# Look for these exclude files
IGNORE_FILES=(~/.rsyncignore ./.gitignore ./.rsyncignore)

EXCLUDE_FROM=""
for f in ${IGNORE_FILES[@]}; do
  if [[ -e $f ]]; then
    EXCLUDE_FROM="$EXCLUDE_FROM --exclude-from=$f "
  fi
done
$RSYNC $EXCLUDE_FROM "$@"

มันจะมองหา~/.rsyncignore, ./.gitignore, ./.rsyncignoreไฟล์และถ้าใด ๆ ของพวกเขาที่มีอยู่ใช้พวกเขาเป็นค่าเริ่มต้น--exclude-fromข้อโต้แย้ง

เพียงแค่เปลี่ยน RSYNC และ IGNORE_FILES เพื่อให้เหมาะกับสภาพแวดล้อมและความชอบของคุณ


0

- ไม่รวม "/ *" จะยกเว้นทุกอย่างตามค่าเริ่มต้น นี่คือตัวอย่าง:

rsync -av - รวม "bin /" --exclude "/ *" / source_dir / / dest_dir /
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.