Удаление Непустого Каталога с smbclient

Следующие две команды оболочки добьются цели:

mkdir -p  /var/lib/mysql/tmp/    # create directories (that don't exist, yet)
rm    -rf /var/lib/mysql/tmp/*   # delete all files and sub-directories

Примечание: Вы, возможно, должны предварительно ожидать каждую строку с sudo позволять Вашему сценарию Ruby выполнить команды оболочки с полномочиями пользователя root. Однако это может быть хитро для установки sudo правильно.


-p опция к mkdir к избавляет от необходимости тестировать существование на каталог:

-p        Create intermediate directories as required.  If this option is
          not specified, the full path prefix of each operand must already
          exist.  On the other hand, with this option specified, no error
          will be reported if a directory given as an operand already
          exists.  Intermediate directories are created with permission
          bits of ``rwxrwxrwx'' (0777) as modified by the current umask,
          plus write and search permission for the owner.

4
04.07.2013, 07:08
3 ответа

Из комментария OP:

Хорошо, я нашел обходное решение: Монтирование удаленных окон совместно использует папку к локальному каталогу и затем выполнению "комнаты-r" Благодаря Mikhail, который дал подсказку здесь – rahimi 2 дня назад

С этим на вопрос эффективно отвечают (и, как побочный эффект, удаленный из Оставшейся без ответа очереди Вопросов).

0
27.01.2020, 20:58
  • 1
    1, Это - неответ на реальный вопрос, как дела это с smbclient? –   11.12.2015, 04:57
  • 2
    Если Вы знаете руководителя ответа, любой ценой. –  Grizly 19.02.2016, 04:12
  • 3
    Это не возможно, который является ответом. smbclient инструмент плохо разработан и определенно не может сделать, это... экономит некоторое время, по крайней мере. Во многих случаях монтирование доли самбы не является практическим решением, таким образом, существует огромный стимул знать ли smbclient может сделать эту вещь. –   19.02.2016, 11:18

Вы можете написать несколько строк:

myHost=fubar
myShare=batch
myRootPath="next_version\\SNAPSHOT"
myDirectory="snafu-fubar"
myCredentials="sbb.ch\\ricky%password"                                                                                                                               

smbclient \\\\${myHost}\\${myShare} -D "${myRootPath}" -U ${myCredentials} -c "recurse on; ls ${myDirectory}" | grep '^\\' \
   | awk -F\\ '{print NF,$0}' | sort -nr | cut -d ' ' -f2- \
   | while read -r myDir; do
      myRoot="${myDir%\\*}"
      myFolder="${myDir##*\\}"
      smbclient \\\\${myHost}\\${myShare} -D "${myDir}" -U ${myCredentials} -c "del *" || true
      smbclient \\\\${myHost}\\${myShare} -D "${myRoot}" -U ${myCredentials} -c "rmdir \"${myFolder}\"" || true
done
2
27.01.2020, 20:58

Немного поздно, но начиная с версии 4.7.0 smbclient появилась команда deltree, которая может это сделать. Он удалит все файлы и каталоги, соответствующие маске, из текущего рабочего каталога на сервере. Не нужно включать рекурсию

smb: \> deltree <mask>
5
27.01.2020, 20:58

Теги

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