Çalışan bir Debian Stretch tabanlı Linux Distro'nun (NextCloudPi) yedeğini almak için bir komut dosyası kullanıyorum

Komut dosyasındaki yedeklemeyi yapan yöntem rsync kullanır.

backup()
{
  mntimg
  sync
  rsync -aDH --partial --numeric-ids --delete --force --exclude "${MNTPATH}" --exclude '/dev' --exclude '/lost+found' --exclude '/media' --exclude '/mnt' \
--exclude '/proc' --exclude '/run' --exclude '/sys' --exclude '/tmp' --exclude '/var/swap' --exclude '/etc/udev/rules.d/70-persistent-net.rules' \
--exclude '/var/lib/asterisk/astdb.sqlite3-journal' "${OPTIONS[@]}" / "${MNTPATH}/"
..
..
}

Komut dosyasını çalıştırdığımda, yedek .img dosyasını harici olarak takılı bir USB-HDD sürücüsüne kaydetmesi için işaret ediyorum.

Bu sürücü EXT4 formatlıdır ve takılıdır. Manjaro dosya gezgininden ona göz atabilirim. Bu yazılabilir ve 2,3 TB boş alana sahiptir.

Yedekleme dosyası yaklaşık 7.8 GB olacak ve yedeklediğim SD Karttaki rootfs'de (/) 22 GB boş alanım var.

Komut dosyasını her çalıştırdığımda bir hata alıyorum rsync: write failed on.. no space left on device:

[email protected]:~# image-backup

Image file to create? /media/4TB2/nextcloudpi18Nov2021v3.img

Initial image file ROOT filesystem size (MB) [7526]? 7800

Added space for incremental updates after shrinking (MB) [0]? 

Create /media/4TB2/nextcloudpi18Nov2021v3.img (y/n)? y

Starting full backup (for incremental backups, run: /usr/local/bin/image-backup /media/4TB2/nextcloudpi18Nov2021v3.img)
rsync: write failed on "/tmp/img-backup-mnt/usr/src/linux-headers-4.14.93-Re4son-v7+/include/linux/suspend.h": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(393) [receiver=3.1.2]

Unable to create backup

[email protected]:~#

Sorunumu çözmemesi için rsync seçeneğini eklesem bile hala --inplacesorunu alıyorum.

Bir yaptım sudo du -sh /usr/srcve boyut 150MB.
/usr/src'de 37.000 dosya ve 12.000 alt klasör var, bu yüzden inode'larım bitiyor diye düşünüyordum ama... Bir yaptım df -ive inode kullanımım kök dizininde (/) %14.

Sorun sona yakın gibi görünüyor.. bu durumda bir 7.9GiB dosyası oluşturulur. Bunu etcher ile bir sd karta atmayı denedim ama açılmadı.

Burada neyin yanlış gittiğine dair bir fikriniz var mı? Gerektiğinde rsync'in işleri /tmp'ye kaydetmesi için rootfs üzerinde yeterli alanım var. Ancak --inplaceseçeneği kullandığımda bile hala diyor ki:rsync: write failed on "/tmp/... blah blah... No space left on device (28)

answer

Şimdi, son yorumunuza dayanarak, büyük olasılıkla sadece bizim düğümlerimizi çalıştırdığını söyleyebilirim. Varsayılan olarak ext4 fs oluşturduğunuzda mkfs, bölüm/görüntü boyutuna göre düğümleri ayırır. Yani görüntü boyutu ne kadar küçükse, inode sayısı o kadar az olur. Bu betiği daha fazla düğüm tahsis etmek için düzenlersiniz, sadece mkfs.ext4'ü yaptığı bir satır bulun ve tahsis ettiği düğüm sayısını -iveya -Nseçeneği ile değiştirin.

Görüntü yedeklemede bu satırı bulun:

    mkfs.ext4 -q -b 4096 "${LOOP}p2" > /dev/null

ve şu şekilde değiştirin:

    mkfs.ext4 -q -b 4096 -i 4096 "${LOOP}p2" > /dev/null

Bu, varsayılan ayarlardan 4 kat daha fazla düğüm yapacaktır.

Sunucunuzdaki bir şeyin böyle bir etki yaratabileceğini sanmıyorum. Seyrek dosyalar da sebep olabilirken, -Sseyrek dosyaları doğru şekilde işleyecek rsync seçeneğiyle bunu azaltabilirsiniz . Ama --inplaceseçenekle çelişiyor .