Чтобы получить все имена из верхнего уровня архива 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
Опять же, если бы архив содержал только один каталог на самом верхнем уровне, это вернуло бы его имя.
К сожалению, это невозможно.
В соответствии с главами 6.2.10 и 6.2.11 документации PuTTY PSFTP невозможно указать права доступа к файлам с помощью команд put
или mput
PSFTP.
Значение umask
, используемое удаленным сервером SFTP, определяет, какие разрешения получат скопированные файлы. Это может быть значение по умолчанию umask
учетной записи удаленного пользователя или явно настроенное значение umask
, если администратор сервера решил переопределить значение по умолчанию.
Если у вас есть доступ администратора к удаленному SFTP-серверу, см. этот вопрос о сбое сервера , чтобы узнать, как указать umask по умолчанию для передачи по SFTP.
Администратор удаленного сервера может установить ACL, который переопределяет значение umask по умолчанию в определенном каталоге, если тип файловой системы, используемый на удаленном сервере, поддерживает ACL.