Şu anda svn veri havuzumuzun en son revizyonunu bir web sunucusuna aktarmak için bir bash kabuk betiği yazıyorum. Bu, sunucuya svn export kullanılarak yapılır ve web sunucusu ile rsync'ing, özel bir kullanıcı (sync_user olarak adlandırılır), bu güncellemeleri gerçekleştirmek için her bir tarafta (sunucu A ve web sunucusu) yeterli izinlerle oluşturulmuştur. senaryo sync_user olarak svn ihracat ve rsync gerçekleştirmek için "su sync_user" kullanır:rsync pop_dir "/ home/user_x" başarısız oldu: izin reddedildi, neden?
sync_section komut bir fonksiyondurexport -f sync_section
su sync_user -c "sync_section $source $tmp $dest"
:
# critical section which performs the actual website update (export & sync)
# takes 3 parameters: source, tmp, dest
function sync_section {
source=$1
tmp=$2
tmp_old=$tmp"_old"
dest=$3
#enter critical section
set -e
# export to temp folder on server A
svn export -q --force $source $tmp --native-eol LF
# rsync with remote live website folder.
rsync -avzhiO $tmp $dest
# clean up
rm -rf $tmp_old
mv -f $tmp $tmp_old
# exit critical section
set +e
}
fikri herkesin izinleri kimin olmasıdır web sunucusu güncellemek/senkronize etmek, sync_user şifresini bilir, böylece "su sync_user" bölümüne girebilir.
teoride iyi geliyor ama rsync bu kurulum memnun değil ve bana aşağıdaki hata iletisini veriyor: öğrendim bazı googeling sonra#### rsync output:
building file list ... rsync: pop_dir "/home/user_x" failed: Permission denied (13)
rsync error: errors selecting input/output files, dirs (code 3) at flist.c(1314) [sender=2.6.8]
(user_x senaryoyu çağırma kullanıcı) o Sorun rsync'nin, sync_user dosyasının komut dosyasının ana dizinde tam erişim izinlerine sahip olmasını gerektirdiğinden dolayı yaşıyorum. Bu doğru mu? ve eğer öyleyse neden? ve bunun için bir çalışma var mı?
Not: Kullanıcının ana dizini, betikte hiç kullanılmamaktadır. Web sunucusunda yalnızca/tmp/on A sunucusu ve/var/www/vhosts/kullanılır.