Синхронизация файлов и прав

Обсуждение технических вопросов по продуктам Novell под Linux, а также *nix систем

Re: Синхронизация файлов и прав

Сообщение solomin » 17 ноя 2010, 16:05

Есть "некрасивый" способ сбросить права(получается и в том числе и расширенные атрибуты). делаем на сервере mv каталога куда-нибудь рядом, даем команду серверу перечитать права(напримео ncpcon rights view VOL:DIR), сервер права удаляет, а затем обратный mv и rsync. :twisted:
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение $erg » 17 ноя 2010, 16:30

Это решение похоже на то, которое предполагает весь объем данных гонять с сервера на сервер, только в данном случае этот же объем гоняем в пределах одного сервера.
Некрасивые это решения.
Гораздо красивее выглядит, когда предлагается скриптом пробежать по всем каталогам и удалить все права, только нужно время, разобраться как его переделать под nss.
$erg
 
Сообщения: 231
Зарегистрирован: 05 май 2005, 12:18
Откуда: Minsk, Belarus

Re: Синхронизация файлов и прав

Сообщение solomin » 17 ноя 2010, 16:37

Не совсем так, перенос в соседний каталог(в прделах одного тома) и обратно займет доли секунды.
Пример:
mv /media/nss/VOL/dir /media/nss/VOL/temp
ncpcon rights view VOL:dir -- эта команда выдаст ошибку
mv /media/nss/VOL/temp/dir /media/nss/VOL/
- сбросит все права на каталог dir и подкаталоги
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение solomin » 18 ноя 2010, 13:43

Если еще интересно, правда на больших объемах не проверял.

#!/bin/bash
dir_='/media/nss/VOL/some dir'
/usr/bin/find "${dir_}" -type d|while read dirs_;do
#echo $dirs_
/sbin/rights -f "${dirs_}" show|/usr/bin/grep ") ."|/usr/bin/awk -F") ." '{print $2}'|while read users_;do
#echo ${users_}
/sbin/rights -f "${dirs_}" delete "${users_}"
done
done
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение solomin » 18 ноя 2010, 15:26

Есть более изящное и быстрое решение для удаления прав:
Согласно описанию(http://developer.novell.com/documentati ... title.html) функция removexattr удаляет только trustee:
"IMPORTANT:This function does not remove the netware.metadata extended attribute, but it does remove all the trustees and directory space restrictions associated with the file or directory."
Поэтому пишем файл (например rmxattr.c) со следующим содержимым:
//----------------------------------------------------
#include <sys/types.h>
#include <sys/xattr.h>

int main(int argc, char** argv)
{
const char* path=argv[1];
int rmresult;
rmresult = removexattr(path, "netware.metadata");
return rmresult;
}
//----------------------------------------------------

говорим нашему файлу 'gcc rmxattr.c' после чего получившийся файл переименовываем и складываем куда-нибудь, нпример в /usr/bin/.
далее удаление прав убдет происходить одной командой:
find /media/nss/VOL/dir -type d -exec /usr/bin/rmxattr {} \;

Поигрался, проверил, работает.
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение Dimerson » 18 ноя 2010, 16:17

solomin писал(а):Есть более изящное и быстрое решение для удаления прав:
Согласно описанию(http://developer.novell.com/documentati ... title.html) функция removexattr удаляет только trustee:
"IMPORTANT:This function does not remove the netware.metadata extended attribute, but it does remove all the trustees and directory space restrictions associated with the file or directory."
Поэтому пишем файл (например rmxattr.c) со следующим содержимым:
//----------------------------------------------------
#include <sys/types.h>
#include <sys/xattr.h>

int main(int argc, char** argv)
{
const char* path=argv[1];
int rmresult;
rmresult = removexattr(path, "netware.metadata");
return rmresult;
}
//----------------------------------------------------

говорим нашему файлу 'gcc rmxattr.c' после чего получившийся файл переименовываем и складываем куда-нибудь, нпример в /usr/bin/.
далее удаление прав убдет происходить одной командой:
find /media/nss/VOL/dir -type d -exec /usr/bin/rmxattr {} \;

Поигрался, проверил, работает.


есть предложение пойти дальше и рекурсивно юзая opendir /readdir + removexattr сделать removexattr -rf /
(i mean аналог rm -rf /)
:) утиль будет полезная

могу выдать сырцы rm-rf.nlm (писанные именно под libc(opendir,readdir etc)).
Последний раз редактировалось Dimerson 18 ноя 2010, 18:04, всего редактировалось 1 раз.
Аватара пользователя
Dimerson
 
Сообщения: 2751
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: Синхронизация файлов и прав

Сообщение solomin » 18 ноя 2010, 16:38

можно попробовать :)
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение Dimerson » 20 ноя 2010, 10:31

по мотивам rm-rf.nlm был сделан рекурсивынй удалятель trustees etc в 32 и 64 битных вариантах .

http://rapidshare.com/files/431965467/r ... 2and64.rar

Потестил у себя - воркает ... ничего грохнуть не могет тк там только opendir/closedir/readdir/stat/removexattr .
Как и ожидалось - через xattr не отображается trustee [PUBLIC] - он его не видит как будто. Как и бакапный софт через xattr.
На сильно большой файлопомойке не пробовал = тестил на ядре лемуха распакованном на томе. Пролетает мгновенно. У кого есть интерес - натравите на развесистую файлопомойку если есть возможность.
Аватара пользователя
Dimerson
 
Сообщения: 2751
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: Синхронизация файлов и прав

Сообщение solomin » 24 ноя 2010, 10:43

сырцы не покажешь? :roll:
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Re: Синхронизация файлов и прав

Сообщение $erg » 29 ноя 2010, 11:50

Я тоже хотел бы взглянуть внутрь.
Поделись пожалуйста своим творчеством.
$erg
 
Сообщения: 231
Зарегистрирован: 05 май 2005, 12:18
Откуда: Minsk, Belarus

Re: Синхронизация файлов и прав

Сообщение Dimerson » 29 ноя 2010, 12:16

а потестить на большой файлопомойке ? (чуть не сказал как в анекдоте а поцеловать ?)

а если без шуток - потестите плиз как оно ? стек не переполняеццо при рекурсивной работе ?
Аватара пользователя
Dimerson
 
Сообщения: 2751
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: Синхронизация файлов и прав

Сообщение $erg » 19 янв 2012, 13:02

прошло больше года, кто-нибудь решил вопрос с синхронизацией данных со всеми правами?
$erg
 
Сообщения: 231
Зарегистрирован: 05 май 2005, 12:18
Откуда: Minsk, Belarus

Re: Синхронизация файлов и прав

Сообщение skoltogyan » 19 янв 2012, 18:27

А КАК ИМЕННО ВЫ ПО RSYNC переганяете данные ?
на NW запускаете rsync в режиме демона, на линухе rsync в режиме клиента (или наоборот) и синхроните ?
Если да, то при переносе таким образом с NW -> LINUX что у вас происходит с файлами и каталогами с русскими именами ?
skoltogyan
 
Сообщения: 1906
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Re: Синхронизация файлов и прав

Сообщение $erg » 20 янв 2012, 09:56

Нет, rsync сервер не настраивал, да я синхронизирую linux-nss с linux-nss.
просто синхронизация каталогов.
rsync -a -v -e ssh --progress --delete --exclude-from=/backup/rsync.excludes --backup --backup-dir=$snapshot_dir root@server:/media/nss/HOME/ /media/nss/WORK/HOME/ >/media/nss/WORK/Backup/sync`date \+\%Y_\%m_\%d`_HOME.log

Главное синхронизировать nss с nss, когда я поначалу backup-dir использовал ресурс на ext3, то русские имена в иероглифы превращались :), а когда перенес этот каталог на nss, то все стало нормально.
Ну и само собой беспарольный вход по ssh.
$erg
 
Сообщения: 231
Зарегистрирован: 05 май 2005, 12:18
Откуда: Minsk, Belarus

Re: Синхронизация файлов и прав

Сообщение skoltogyan » 20 янв 2012, 11:28

понятно. если с nw(NSS)--->linux(nss) по rsync переганять ( rsync в режиме демонов, а не файловомапленное), тогда русские на линуксе получались бредом у меня
skoltogyan
 
Сообщения: 1906
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Пред.

Вернуться в *nix

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron