2016-01-21 3 views
0

У меня есть скрипт sh, который копирует все файлы из некоторой папки на какой-то хост.Bash & CYGWIN: SCP не видит файлы

scp -r -i PATH_TO_SSH_KEY SOURCE_FOLDER/* SERVER:TARGET_DIR 

Когда я запускаю этот скрипт я получаю следующий результат:

Cygwin перечисляет все файлы в моем SOURCE_FOLDER и говорит, что эти файлы не найдены! "Данный файл или каталог отсутствует". Это странно. Я проверил, что все файлы в этой папке имеют разрешения -rw-r-r--. Я попытался установить более высокие разрешения, но я не могу их хранить, потому что файлы обновляются каждый раз, когда я запускаю этот скрипт, поэтому они всегда такие.

Вопросов:

1), какие разрешения должны передавать файлы по УПП?

2) Могу ли я настроить папку таким образом, чтобы все файлы внутри всегда создавались с некоторыми предопределенными разрешениями?

3) в случае, если мое предположение о разрешении падает - что еще может быть причиной такого поведения?

+0

Работы для меня. Попробуйте запустить скрипт с 'set -xv', чтобы узнать, что происходит. – choroba

ответ

0

Кажется, работает для меня, но я работаю в Linux. Не 100% знакомы с cygwin. Чтобы ответить на ваши вопросы о разрешениях:

1) Файлы должны быть доступны для записи. Если они принадлежат root, ну, измените группу или используйте sudo. Я объясню следующий шаг, как бы с этим справиться.

2) Да, вы хотите использовать umask для достижения этого. Я бы не сделал удаленную копию пользователя root или 777. Вы хотите назначить umask для этого каталога и присвоить ему определенные группы. A 002 umask означает, что все люди, входящие в группу в этом каталоге, имеют доступ на чтение. Следующие две команды добавят группу в этот каталог и группу по умолчанию для файлов. Ниже приведен пример синтаксиса:

umask 002 <dir> 
chgrp <group> <dir> 
chmod g+s <dir>  

3) Синтаксис ... но я предполагаю разрешения. Проверьте разрешения как целевого, так и исходного сервера.

Надеюсь, это было полезно! ссылка

Umask: http://man7.org/linux/man-pages/man2/umask.2.html

ура!

Смежные вопросы