Как я могу Создать Несколько Файлов единственного файла в нескольких Каталогах?

Когда я обнаружил Unix ACLs несколько лет назад, они поразили меня! Также удивительно, как они не общепринятая истина.

Короче говоря они позволяют Вам устанавливать расширенное разрешение файла, кроме того простого user+group+other, классически зарегистрированного.

Две команды, которые Вы хотите, являются "setfacl" и "getfacl". Вы, возможно, должны повторно смонтировать свою фс с поддержкой acl, если она жалуется, "монтируют, что-o повторно монтируются, rw, acl /".

Этими двумя распространенными способами я использую setfacl:

setfacl -R -m u:apache:rwx /var/www/mydirectory
setfacl -R -d -m u:apache:rwx /var/www/mydirectory

Первая строка рекурсивно добавленные rwx полномочия ко всему в данном пути (сверху полномочий уже на месте). Вторая команда вырабатывает политику по умолчанию для новых файлов и каталогов, чтобы автоматически иметь rwx для апачского пользователя.

Это sooo намного более быстрый, чем питание с suPHP или полномочиями группы и т.д.

2
задан 30 August 2013 в 21:59
2 ответа

Используйте команду forfiles. Запустите forfiles /? для помощи.

Если вас беспокоит параллельная обработка копий, вы можете создать 6 разных сценариев, по одному для каждого каталога, а затем запустить их все из одного сценария, используя start scriptname.bat , который не будет ждать возврата значения, такого как вызов .

0
ответ дан 3 December 2019 в 15:24

Попробуйте этот. Это некрасиво, потому что это * $ #? редактор потерял отступы, разрывы строк и т. д.

--- ПЕРЕСМОТРЕННЫЙ СЦЕНАРИЙ

@echo off

setlocal

set ROOT_DIR=c:\temp\test

for /f "tokens=*" %%D in ('dir /ad /b "%ROOT_DIR%"') do call :PROCESS_DIR "%ROOT_DIR%" "%%D"

endlocal

goto END


:PROCESS_DIR

set PD_ROOT=%1
set PD_ROOT=%PD_ROOT:"=%
set PD_DIR=%2
set PD_DIR=%PD_DIR:"=%
set PD_FIRST_FILE=
set PD_SOURCE_FILE=

REM ***
REM *** GET THE NAME OF THE FIRST FILE IN THIS FOLDER.
REM ***
for /f "tokens=*" %%F in ('dir /o-n /b "%PD_ROOT%\%PD_DIR%"') do set PD_FIRST_FILE=%%F

if "%PD_FIRST_FILE%" == "" (
    echo WARNING : No files found in [%PD_DIR%] - skipping.
    goto END
    )

set PD_SOURCE_FILE=%PD_ROOT%\%PD_DIR%\%PD_FIRST_FILE%

REM ***
REM *** CREATE FILES.
REM ***
for /l %%I in (1,1,100) do call :CREATE_FILE_COPY "%PD_ROOT%\%PD_DIR%" "%PD_SOURCE_FILE%" 00%%I

goto END

:CREATE_FILE_COPY

set CFP_DIR=%1
set CFP_DIR=%CFP_DIR:"=%
set CFP_FILE=%2
set CFP_INDEX=%3
set CFP_FILE_NO_EXT=

REM ***
REM *** GET FILE NAME WITHOUT EXTENSION.
REM ***
for /f %%F in ("%CFP_FILE%") do set CFP_FILE_NO_EXT=%%~nF

REM ***
REM *** COPY THE FILE.
REM ***
copy /y %CFP_FILE% "%CFP_DIR%\%CFP_FILE_NO_EXT%.%CFP_INDEX:~-3%

goto END


:END
0
ответ дан 3 December 2019 в 15:24

Теги

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