Подход, который я бы использовал, состоит в том, чтобы взять выходные данные ls, настроить массив, отображающий преобразованное имя обратно в исходное имя, а затем обработать каждую строку входного файла. Если входные данные находятся в массиве, выведите значение массива, в противном случае добавьте строку ввода в отсутствующий файл
. Например, поместите это в файл, перейдите в каталог
и запустите его с входным файлом
в качестве параметра
#!/usr/bin/awk
# set up an array t of translations
BEGIN {
while (("ls" | getline )>0) {
k=$0
gsub(/ /,"_")
if ($0 in t) {
print "$0 matches more than one file" > /dev/stderr
exit(2)
}
t[$0]=k
}
close("ls")
}
{ if ($0 in t) {
print t[$0]
} else {
print $0 > "../missing"
}
}
в EOS в конце выполнения резервного копирования
find /user/orac/monthly/ -name 'daily_backup_ORAC_*' -mtime -1 -print > /var/tmp/todays_backup.txt
в домене 1 выполните
rcp EOS:/var/tmp/todays_backup.txt /var/tmp
for f in $(< /var/tmp/todays_backup.txt)
do
rcp -p EOS:$f /database/backup_eos/
done
таким образом, поиск выполняется локально, а домен 2 должен только получить список и получить файл.
если $ (<)
не поддерживается, используйте
while read f
do
/var/tmp/todays_backup.txt
done < /var/tmp/todays_backup.txt