Forum
Merhaba, Windows server 2008 File server'a sahibiz. Paylaşılan klasörlerimiz D sürücüsünde 600GB ve karışık yetkilendirmeler var. Bu sürücüde problem var hataları checkdisk düzeltemiyor. Bu datayı, yetkileri izinleri bozulmadan yeni oluşturacağımız disk bölümüne nasıl taşırız? Teracopy programı ile izinleri de taşıyabilir miyiz?
Merhabalar
Robocopy ile taşıyabilirsiniz
robocopy “\\OLDSERVER\OLDSHARE\” “\\NEWSERVER\NEWSHARE” /S /E /COPY:DATS
iyi çalışmalar
Robocopy türkçe karakterli ve uzun dosyalarda problem çıkardığını duymuştum
Teracopy görsel olduğu için kullanımı daha kolay bu probram ile izinler taşınabilir mi? veya başka bir yazılım?
test etmek varken (ki oldukça basit ) duyum üzerinden karar vermeye gerek var mı ki
totalcommander de vardı sanırım ntfs haklarını da kopyala gibi bir seçenek ayrıca
kolay gelsin
ben uzun karakterli dosya kopyalarken sıkıntı yaşamamıştım.
Selamlar
Vasvi Bey'in söylediklerine ek olarak, günlük de tutturmanızı tavsiye ederim.
Örnek bir komut şu şekilde olabilir:
P:\00 klasörünü --> x:\00 yansılar.
robocopy p:\00 x:\00 /SEC /MIR /W:5 /R:3 /TEE /LOG:x:\Log_P_00.txt
/SEC yetkileri kopyalar
/MIR yansı yapacaktır. 2. defa aynı komutu çalıştırırsanız sadece değişiklik olanları kopyalar, silinenler varsa hedeften de siler, yetkilerini düzenledikleriniz olursa günceller.
/W:5 /R:3 kullanımda olabilecek dosyalar için bekleme süresi saniye olarak 5, tekrar deneme sayısı 3, diskte sorun olduğundan bahsetmişsiniz, bazı dosya, klasör v.b. çok beklememesini sağlar. Günlükten takip edebilirsiniz.
/TEE konsola da yazar, en sonda rapor alırsınız.
/LOG:x:\Log_P_00.txt GÜnlük tutma (Büyük bir dosya olacaktır)
/XD "p:\System Volume Information" /XD "p:\RECYCLER" kopyalanmasını istemediğiniz klasörleri yazabilirsiniz.
Total Commander kullanırsanız, günlük tutmasını sağlayınız, "Configuration", "Log File", özellikle "Operation Status" bölümündeki seçenekleri de unutmayınız.
__________________________________ Gelecek, Açık. The Future is Open. https://hcaglar.blogspot.com
Selamlar
Vasvi Bey'in söylediklerine ek olarak, günlük de tutturmanızı tavsiye ederim.
Örnek bir komut şu şekilde olabilir:
P:\00 klasörünü --> x:\00 yansılar.robocopy p:\00 x:\00 /SEC /MIR /W:5 /R:3 /TEE /LOG:x:\Log_P_00.txt
/SEC yetkileri kopyalar
/MIR yansı yapacaktır. 2. defa aynı komutu çalıştırırsanız sadece değişiklik olanları kopyalar, silinenler varsa hedeften de siler, yetkilerini düzenledikleriniz olursa günceller.
/W:5 /R:3 kullanımda olabilecek dosyalar için bekleme süresi saniye olarak 5, tekrar deneme sayısı 3, diskte sorun olduğundan bahsetmişsiniz, bazı dosya, klasör v.b. çok beklememesini sağlar. Günlükten takip edebilirsiniz.
/TEE konsola da yazar, en sonda rapor alırsınız.
/LOG:x:\Log_P_00.txt GÜnlük tutma (Büyük bir dosya olacaktır)
/XD "p:\System Volume Information" /XD "p:\RECYCLER" kopyalanmasını istemediğiniz klasörleri yazabilirsiniz.Total Commander kullanırsanız, günlük tutmasını sağlayınız, "Configuration", "Log File", özellikle "Operation Status" bölümündeki seçenekleri de unutmayınız.
Merhaba Huseyin Bey,
peki bu komutlar user shear folder rights''da kopiyalabiliyor mu ?
Merhaba,
Öncelikle taşıma yapacağınız klasör üzerine gelerek yukarıdan izinleri almasını kapatın.
Click the "Security" tab and select "Advanced." Click the "Permissions" tab, and then click "Disable Inheritance." In the pop-up window that opens, click "Convert inherited permissions into explicit permissions on this object."
Daha sonra ise yönetici olarak cmd satırını çalıştırın ve aşağıdaki gibi komutu kullanın
ROBOCOPY "\\servername\sharelocation" "\\newservername\newsharelocation" /MIR /SEC /LOG:location:\logdosyasi.txt
Yasa aşağıdaki makaleyi inceleyin
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Merhaba
Yukarıda söylenenlere ek olarak, sadece NTFS izinleri taşınır, paylaşım izinleri taşınmaz.
fsmgmt.msc ile paylaşım izinlerini kontrol ederek, fazla değil ise grafik arabirimden yapılabilir;
fazla ise aşağıdaki powershell komutlarından yararlanabilirsiniz:
Var olan paylaşımlari listeleme:
Get-SmbShare
Var olan yetkileri listeleme:
Get-SmbShareAccess -Name Paylasim_adi
ya da
Get-SmbShareAccess -Name Paylasim_adi | ft AccountName, AccessRight -a
Yeni paylaşım oluşturma:
New-SmbShare -Name Paylasim_adi -Path C:\TEMP\Deneme_Klasor -FullAccess "domain\kullanici_hesabi", "domain\grup_adi" -ReadAccess "domain\Domain Users" -ChangeAccess "Domain\TestGRP"
Paylaşıma yetki ekleme:
Grant-SmbShareAccess -Name "paylasim_adi" -AccessRight Read -AccountName "Everyone"
Paylaşımdan yetki kaldırma:
Revoke-SmbShareAccess -Name "paylasim_adi" -AccountName "Everyone" -Force
Paylaşımı kaldırma:
Remove-SmbShare -Name paylasim_adi
__________________________________ Gelecek, Açık. The Future is Open. https://hcaglar.blogspot.com
Merhaba
Windows server 2012 öncesi olan sürümlerden paylaşım yetkilerini almak için ise WMI'dan yararlanılabilinir.
Powershell (PS) sürüm 5.1 ile Windows 10 yüklü makinanızdan, Windows 2008 R2 sunucunuzdaki paylaşım yetkilerini olabilirsiniz.
Bunu bir kaç aşamada yapmak mümkün;
- 1. aşamada var olan paylaşım isimleri ve adresleri bir csv dosyaya kaydedilir, bu dosyada gereksiz olanları silmeyi unutmayınız;
- 2. aşamada csv dosya kullanılarak paylaşım yetkileri listelenir ve bir başka csv dosyaya kaydedilir;
- 3. son aşamada yeni sunucuda her 2 csv dosya kullanılarak paylaşımlar yeniden oluşturular, yetkiler verilir. Bu aşama için gerekli olan komutlar en sonda verilmiştir.
Tüm bu aşamalar, aşağıdaki PS betiğinde toplandı. Sadece listeleme ve csv dosyalara kayıt yapmaktadır.
Admin yetkisi ile açacağınız "PS ISE" penceresine aşağıdaki betiği yapıştırınız. Belirtilen yerlerde gerekli değişiklikleri yapınız.
Sunucudan WMI ile ilgili bilgi alabilmek için karşı tarafta; yetkiniz olmalı, güvenlik duvarında ilgili izinler verilmiş olmalı ve son olarak da DCOM ve RPC servisleri çalışıyor olması gerekir.
#
# Bu adresden yararlanılmıştır.
# https://kimconnect.com/powershell-copy-smb-share-permissions-from-legacy-sources/
#
#
#cls
# Sunucu_Adi ve csv dosya adreslerini ("c:\temp") değiştirmeyi unutmayiniz!
#
#$smbServerName="Sunucu_Adi"
#
# paylaşım isimlerinin yazılacağı csv dosya$csv_dosya="c:\temp\"+$smbServerName+"_paylasimlar.csv"
#
# yetkilerin yazılacağı csv dosya$csv_dosya_02="c:\temp\"+$smbServerName+"_yetkiler.csv"
#
#if (test-path $csv_dosya) {remove-item $csv_dosya} {}
#if (test-path $csv_dosya_02) {remove-item $csv_dosya_02} {}####### 1. aşama
##
# var olan sunucudan paylasim isimleri ve adresleri alınarak csv dosyaya kaydediliyor...
#Get-WmiObject -Class Win32_Share -ComputerName $smbServerName | sort Description | select-object Name, Path | Export-Csv $csv_dosya -NoClobber -Encoding UTF8
####### 2. aşama için komut oluşturuluyor, aşağıda csv dosya kullanılarak çalıştırılacak...
function SMB_Yetkileri_Listele{
param(
[string]$smbServerName,
[string]$smbShareName
)#
# "$" ile biten paylaşım isimleri kullanmış iseniz, '|where-object{$_.Name -notlike "*$"}' bölümünü aşağıdaki satır sonundan siliniz.
#
$smbList = Get-WmiObject win32_LogicalShareSecuritySetting -ComputerName $smbServerName|where-object{$_.Name -notlike "*$"}
if($smbList){
$smbObject=$smbList|where-object{$_.Name -eq $smbShareName};
}else{
$message="$smbServerName isimli sunucudan, SMB yetkileri almada hata olustu!";
$GLOBAL:messages+=$message+"`r`n";
write-host $message -ForegroundColor Yellow;
$smbObject=$false;
}if($smbObject){
$message="$smbShareName isimli paylasim yetkileri aliniyor...";
$GLOBAL:messages+=$message+"`r`n";
Write-Host `r`n$message;
$smbPermissions = @()
$acls = $smbObject.GetSecurityDescriptor().Descriptor.DACL
foreach($acl in $acls){
$user = $acl.Trustee.Name
if(!($user)){$user = $acl.Trustee.SID}
$domain = $acl.Trustee.Domain
switch($acl.AccessMask){
2032127 {$accessRight = "Full"}
1245631 {$accessRight = "Change"}
1179817 {$accessRight = "Read"}
}
$smbPermissions+=[PSCustomObject]@{Paylasim=$smbShareName;Yetki=$accessRight;Hesap="$domain\$user"};
}
#
# 2. aşama sonucun csv dosyaya kaydedilmesi...
#
return $smbPermissions |select-object Paylasim,Yetki,Hesap |Export-Csv $csv_dosya_02 -append -NoClobber -Encoding UTF8;
#
}else{
write-host ("-" * 40)
write-host "Paylasim ile ilgili hata var!";
write-host $smbShareName -ForegroundColor Yellow;
write-host ("-" * 40)
return $false ;
}
}
####### 2. aşama
#
#
# başlardaki $smbServerName ve $csv_dosya değiştirmeyi unutmayiniz!
#
# Oluşturulan komut çalıştırılıyor...import-csv $csv_dosya -Encoding UTF8| foreach-object {SMB_Yetkileri_Listele -smbServerName $smbServerName -smbShareName $_.name;}
#
#Ekrana listelemek için
#import-csv $csv_dosya_02
####### 3. aşama
#
## Aşağıdaki komutları, yeni sunucuda (2012 ve sonrası) paylaşımları tekrar oluşturmak, listelemek için kullanabilirsiniz.
#
# ilk csv dosyadaki gereksiz paylaşımları temizlemeyi unutmayiniz, "C$", "ADMIN$" gibi.
#
# 2. csv dosyada eklemek veya çıkartmak istediğiniz hesapları güncellemeyi unutmayınız.
#
# csv dosyaları da, yeni sunucuda komutları çalıştıracağınız adrese kopyalamayı unutmayınız.
#
# ilk komut ile sadece, "Domain Admins" tam yetkili olacak, diğer yetkiler 2. dosyadan aşağıda eklenecek.
#
#
# import-csv $csv_dosya | foreach-object { New-SmbShare -Name $_.Name -Path $_.Path -FullAccess "$env:userdomain\Domain Admins"}
#
# Diğer yetkiler;
#import-csv $csv_dosya_02 |foreach-object {Grant-SmbShareAccess -Name $_.Paylasim -AccessRight $_.Yetki -AccountName $_.Hesap}
#
# yetkileri listeleme
#import-csv $csv_dosya| foreach-object {Get-SmbShareAccess -Name $_.Name | format-table Name, AccountName, AccessRight -autosize}
#
#
Umarım işe yarar.
__________________________________ Gelecek, Açık. The Future is Open. https://hcaglar.blogspot.com
Güzel bilgi, teşekkürler.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************