#!/bin/sh # # Copyright (C) 2000-2015 Kern Sibbald # License: BSD 2-Clause; see file LICENSE-FOSS # # # Test if Bacula can handle big fileset # This test create 2M files on a directory and # backup it twice in accurate mode. # # Creating 2M files is very long, so the "many-files" # directory isn' cleaned at the end. # TestName="big-files-test" JobName=BigFiles . scripts/functions copy_test_confs echo "${cwd}/many-files" >${cwd}/tmp/file-list if [ ! -f ${cwd}/many-files/100000file100000 ]; then mkdir -p ${cwd}/many-files cd ${cwd}/many-files print_debug "Creating 2000000 files..." time perl -e 'for($i=0; $i < 2000000; $i++) {open(FP, ">${i}file${i}") or die "$!"; print FP "$i\n"; close(FP); print "\r$i " if ($i%10000);}' fi cd $cwd} sed 's%# Label Format% Label Format%' ${cwd}/bin/bacula-dir.conf > ${cwd}/tmp/1 # sed 's%Type = Backup%Type = Backup; Accurate = yes%' ${cwd}/tmp/1 > ${cwd}/bin/bacula-dir.conf sed 's%Type = Backup%Type = Backup%' ${cwd}/tmp/1 > ${cwd}/bin/bacula-dir.conf change_jobname MonsterFileSet $JobName start_test cat <${cwd}/tmp/bconcmds @$out /dev/null messages @$out ${cwd}/tmp/log1.out status all status all list pools messages @#setdebug level=110 storage=File run job=$JobName storage=File yes list pools list volumes wait sql SELECT StartTime, JobFiles, JobId, Level, count(*) AS nb_jobmedia FROM JobMedia join Job using (JobId) join Client using (ClientId) where Client.Name = 'localhost-fd' group by JobId, Level, StartTime, JobFiles order by JobId desc ; messages run job=$JobName storage=File yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out @#setdebug level=400 storage=File restore where=${cwd}/tmp/bacula-restores select storage=File unmark * mark * count find 10file10 pwd estimate done yes wait messages quit END_OF_SCRIPT run_bacula check_for_zombie_jobs storage=File || exit 1 stop_bacula check_two_logs # we are really more interested to know if backup and restore # worked, but checking the files restored is non-trivial due # to the big fileset exclusions # check_restore_diff zstat=0 dstat=0 bstat=0 rstat=0 end_test