Как с помощью MPUT в PSFTP поставить файл с разрешением 777?

Чтобы получить все имена из верхнего уровня архива tar:

tar -tf archive.tar | cut -d '/' -f 1 | sort -u

Это выведет список содержимого архива и вырежет первый бит перед /в каждой строке. Результат сортируется и дубликаты удаляются. Если архив содержит только один каталог верхнего уровня -(, возможно, с файлами и подкаталогами внутри него ), результатом будет имя этого каталога.

Если верхние -имена уровней содержат новые строки, то результат будет зависеть от того, tarкакая реализация используется (вы получите строку с закодированным символом новой строки(\n)с GNUtar(GNU tarтакже будет кодировать табуляцию и, возможно, другие символы в именах )и две отдельные строки из BSDtar).

Пример:

$ tar -tf archive.tar
README.txt
source
source/program.c
$ tar -tf archive.tar | cut -d '/' -f 1 | sort -u
README.txt
source

Опять же, если бы архив содержал только один каталог на самом верхнем уровне, это вернуло бы его имя.

0
23.09.2021, 09:12
1 ответ

К сожалению, это невозможно.

В соответствии с главами 6.2.10 и 6.2.11 документации PuTTY PSFTP невозможно указать права доступа к файлам с помощью команд putили mputPSFTP.

Значение umask, используемое удаленным сервером SFTP, определяет, какие разрешения получат скопированные файлы. Это может быть значение по умолчанию umaskучетной записи удаленного пользователя или явно настроенное значение umask, если администратор сервера решил переопределить значение по умолчанию.

Если у вас есть доступ администратора к удаленному SFTP-серверу, см. этот вопрос о сбое сервера , чтобы узнать, как указать umask по умолчанию для передачи по SFTP.

Администратор удаленного сервера может установить ACL, который переопределяет значение umask по умолчанию в определенном каталоге, если тип файловой системы, используемый на удаленном сервере, поддерживает ACL.

1
23.09.2021, 11:22

Теги

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