Запишите функцию удара, которая воздействует на список имен файлов

Кажется, что у Вас есть другой диспетчер пакетов, работающий одновременно. Проверьте, существуют ли другие экземпляры apt-get, aptitude, synaptic, update-manager или другое выполнение диспетчеров пакетов и закрывает их прежде, чем запустить dist-обновление.

Это возможно это update-manager, графический менеджер обновления был запущен автоматически после apt-get update когда новые обновления стали доступными.

Можно удалить файл блокировки вручную, но очень рекомендуется закрыться, программа, содержащая блокировку обычно начиная с прерывания продолжающейся установки, может вызвать системное повреждение. Следующая команда закроет программу, содержащую блокировку, и удалит lockfile, но это не защитит ни от каких побочных эффектов, вызванных прерыванием установки.

su -c 'fuser -cuk /var/cache/apt/archives/lock; rm -f /var/cache/apt/archives/lock'
3
10.02.2015, 19:58
3 ответа

Попробуйте так:

cpfromserver () {
    files=''
    for x in "$@"
    do
        files="$files /some/location/$x/$x.txt /some/location/$x/$x.pdf"
    done
    scp user@remote.server:"$files" /somewhere/else/
}

Важное предостережение от комментариев : «Стоит отметить, что следует отметить, что это решение определенно не будет работать для сложных файлов файлов. Если имя файла содержит пространство, Или новая линия или цитаты, этот подход определенно не удастся. "

4
27.01.2020, 21:19

Здесь простой пример:

#!/bin/bash

files_to_copy=''
destination_directory=''

while (("$#")) ; do
  if [[ "$@" = "$1" ]] ; then
    # last argument
    destination_directory="$1"
  else
    # argument
    files_to_copy="$files_to_copy $1"
  fi
  shift
done

scp user@remote.server:"$files_to_copy" $destination_directory;

Если вы запустите ./ Пример .sh foo.pdf foo.txt foo.jpg Резервное копирование / Вы должны получить:

# this will be executed
scp user@remote.server:" foo.pdf foo.txt foo.jpg" backup/
1
27.01.2020, 21:19

Основная идея состоит в том, чтобы приготовить строку со списком файлов для работы (даже через петлю), чем передавать строку в команду:

sloc='/some/location'
unset flist
for i in "$@"
do
    flist[${#flist[*]}]="$sloc/$i/$i".pdf
    flist[${#flist[*]}]="$sloc/$i/$i".txt
done
scp user@remote.server:"${flist[@]}" /somewhere/else/
-1
27.01.2020, 21:19

Теги

Похожие вопросы