Как удалить несколько файлов с помощью sftp

Я не думаю, что это - dom0_mem, это - проблема здесь. Я думаю, что мы говорим о пространстве, должен был загрузить ядро и initrd в памяти в специальную область, зарезервированную Xen.

Могло случиться так, что initrd и/или vmlinuz являются неправильно большими. Вы могли также попытаться сократить количество центральных процессоров, доступных dom0 (dom0_max_vcpus=2 например).

12
04.11.2014, 18:36
5 ответов

Вот одно из возможных решений, которое может быть добавлено в скрипт bash. Это не идеальное решение, так как оно сделает новое соединение для каждого файла.

#!/bin/bash
# set variables
USER="username"
HOST="hostname"
file_list="file1 file1 file3 file4"
# delete each file
for file in $file_list; do
    echo "rm $file" | sftp $USER@$HOST
done
exit 0

Этот один лайнер намного лучше! file1-9 - это имена файлов для удаления, используйте переменную, если хотите, это одно и то же.

for file in file1 file2 file3 file4 file5 file6 file7 file8 file9; do echo -e "rm $file" >> sftp_batch; done; sftp -b sftp_batch username@hostname; rm sftp_batch
8
27.01.2020, 19:56

Вы не можете дать команду RM в SFTP , требуется только один путь, как написано на странице человека:

rm path
    Delete remote file specified by path.
1
27.01.2020, 19:56

Я обычно использую LFTP для этого.

Настройка - на rmeote Server Skinner
$ mkdir adir
$ touch afile1 afile2
$ ls
afile1  afile2
Теперь мы удаляем
$ file_list="afile1 afile2"
$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list"
cd ok, cwd=/home/sam/adir    
rm ok, 2 files removed                 
lftp sam@skinner:~/adir> ls
drwxr-xr-x    2 sam      users        4096 Nov  4 11:52 .
drwxr-x---  131 sam      users       20480 Nov  4 11:51 ..
lftp sam@skinner:~/adir> bye

, чтобы сделать его одной командой:

$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list; bye"
1
27.01.2020, 19:56

Наиболее полезным решением на данный момент является следующее:

screen -S CMD1 -d -m command1 ;
screen -S CMD2 -d -m command2 ;

И вы подключаетесь к экранам с помощью: screen -r < pid >. < cmd > и выходите из системы с помощью control + a Это интересно, но... немного неуклюжий a сказал бы, как вы не визуализируете свои интерфейсы и должны двигаться от одного к другому не так интуитивно, плюс, вы должны помнить, чтобы закрыть их, потому что в противном случае вы можете оставить серверы, не замечая и т.д.

Если кто-то считает, что есть лучшее решение и легко, дайте мне знать.;) PD: Я нашел решение здесь: https://stackoverflow.com/questions/18197395/have-bash-script-execute-multiple-programs-as-separate-processes

-121--230382-
$ awk 'BEGIN{last=0}{delta[NR]=$2-last; last=$2; print $0" "delta[NR]}' file

даст вам

2003-07-03T16:05 279 279
2003-07-03T16:10 283 4
2003-07-03T16:15 282 -1

с дельтами в последнем столбце, так что найти самый большой просто труба его сортировать

$ awk 'BEGIN{last=0}{delta[NR]=$2-last; last=$2; print $0" "delta[NR]}' file | sort -k3n
2003-07-03T16:15 282 -1
2003-07-03T16:10 283 4
2003-07-03T16:05 279 279

, но для миллионов записей это будет действительно медленно. Вместо этого я бы использовал mysql или другую БД.

-121--79925-

Если вы можете sftp, вы не можете запустить ssh? Если да, то такая команда, как:

 ssh user@hostname rm file1 file2 

, должна работать нормально. При использовании общих/частных ключей SSH запрос пароля не выводится.

1
27.01.2020, 19:56

Если это имена файлов. Вы можете удалить их с помощью шаблона глобуса с

rm file*
1
27.01.2020, 19:56

Теги

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