rsync --backup-dir tidak mendapatkan data yang berubah - melainkan pergi ke lokasi cadangan asli

1

Saya tidak yakin mengapa ini tidak berfungsi seperti yang diharapkan. Saya memiliki cadangan rsync penuh dari / skrip / sumber di / skrip / penuh dan ingin memasukkan cadangan diferensial ke / skrip / diff Namun, ketika file ditambahkan ke lokasi asal / skrip / sumber dan kemudian cadangan diferensial dijalankan , file dicadangkan ke / skrip / penuh alih-alih / skrip / diff Berikut ini skrip pengujian yang saya buat:

DIFF='/scripts/diff'
SOURCE='/scripts/source'
FULL='/scripts/full'
CTIME=$(date +%T)
TESTFILE=newfile$CTIME
rm -r $DIFF/*
rm $SOURCE/newfile*
rm $FULL/newfile*
echo "I'm in a file " >  $SOURCE/$TESTFILE
rsync \
-a \
-A \
-X \
-h \
-H \
-b \
--backup-dir=$DIFF \
$SOURCE/* \
$FULL
echo "----------------------------------------------------------------------"
echo "Our test file is: $TESTFILE"
echo "----------------------------------------------------------------------"
echo "Source Files in $SOURCE - we should see our one test file"
ls $SOURCE
echo "----------------------------------------------------------------------"
echo "Full backup in past - We should not see any test files here"
ls $FULL
echo "----------------------------------------------------------------------"
echo "Diff files in $DIFF  - we should see the same test file here as"
echo "was in the $SOURCE dir"
ls $DIFF

Dalam skrip, file uji akan dijatuhkan di direktori sumber. rsync seharusnya tidak menyalinnya direktori lengkap (tetapi itu) Ini harus disalin ke direktori diff (bukan).

Membaca ulang halaman manual dan mencari di web tidak membantu. Skema pencadangan diferensial sederhana ketika disesuaikan untuk lingkungan saya tidak berfungsi. Apa yang saya lakukan salah di sini? Saya ingin melakukan pencadangan penuh sesekali. Lalu saya ingin menjalankan diff berikutnya yang hanya berisi file yang diubah (sementara cadangan lengkap tidak pernah berubah). Gagasannya adalah bahwa ada cadangan lengkap untuk referensi, dan file yang diubah dapat ditemukan di diff. Skrip saya lebih kompleks dari ini, tetapi saya menyederhanakannya untuk mengisolasi masalah ini. Terima kasih, -Jeff

gephenzie
sumber

Jawaban:

0

Saya kira pilihannya -b --backup-dir jangan bertindak seperti yang kamu harapkan.
Anda dapat mencoba menggunakan opsi yang berbeda --link-dest sebagai gantinya. Baris perintah Anda harus serupa dengan yang berikut

rsync -aAXhH --link-dest=/scripts/full/  /scripts/source/  /scripts/diff/

Apa artinya?
Anda menyuruh rsync untuk membandingkan file dalam /scripts/source/ (yang baru) dengan yang ada di /scripts/diff/ (itu kosong) dan di direktori tambahan /scripts/full/ (Itu salah satu cadangan Anda).

Catatan:

  • Biasanya lebih baik melindungi variabel dengan penawaran ganda "". Jadi lebih baik TESTFILE="newfile${CTIME}" kemudian TESTFILE=newfile$CTIME
  • Dari manusia rsync:

    --link-dest=DIR         hardlink to files in DIR when unchanged
    
  • Opsi --backup-dir (...) mungkin digunakan untuk menyalin file biasanya dengan ekstensi yang berbeda atau di direktori yang berbeda, bukan untuk menimpa file di direktori tujuan.

    -b, --backup                make backups (see --suffix & --backup-dir)
        --backup-dir=DIR        make backups into hierarchy based in DIR
        --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)
    
  • Ya mereka seharusnya kurang samar-samar ...
Hastur
sumber