File indexing completed on 2024-05-05 04:49:36
0001 #!/usr/bin/env ruby 0002 # 0003 # 0004 # Ruby database backup script 0005 # (c) 2005-2007 Seb Ruiz <ruiz@kde.org> 0006 # Released under the GPL v2 license 0007 0008 0009 def getFilename( input ) 0010 puts input 0011 date = `date +%Y%m%d` 0012 i = 1 0013 input = input + "." + date 0014 original = input 0015 0016 # don't overwrite a previously written backup 0017 loop do 0018 file = File.dirname( File.expand_path( __FILE__ ) ) + "/" + input 0019 0020 if not FileTest.exist?( file ) 0021 return input 0022 end 0023 0024 i = i + 1 0025 newName = original + "." + i 0026 input = newname 0027 end 0028 end 0029 0030 if $*.empty?() or $*[0] == "--help" 0031 puts( "Usage: backupDatabase.rb saveDirectory" ) 0032 puts() 0033 puts( "Backup your Amarok database!" ) 0034 exit( 1 ) 0035 end 0036 0037 destination = $*[0] + "/" 0038 0039 unless FileTest.directory?( destination ) 0040 system("dcop", "amarok", "playlist", "popupMessage", "Error: Save destination must be a directory") 0041 exit( 1 ) 0042 end 0043 0044 unless FileTest.writable_real?( destination ) 0045 system("dcop", "amarok", "playlist", "popupMessage", "Error: Destination directory not writable.") 0046 exit( 1 ) 0047 end 0048 0049 filename = "" 0050 database = `dcop amarok script readConfig DatabaseEngine`.chomp!() 0051 0052 case database 0053 0054 when "0" # sqlite 0055 filename = "collection.db" 0056 filename = getFilename( filename ) 0057 dest = destination + "/" + filename 0058 puts dest 0059 `cp ~/.kde/share/apps/amarok/collection.db #{dest}` 0060 0061 when "1" # mysql 0062 filename = "amarokdb.mysql" 0063 filename = getFilename( filename ) 0064 dest = destination + "/" + filename 0065 puts dest 0066 db = `dcop amarok script readConfig MySqlDbName`.chomp!() 0067 user = `dcop amarok script readConfig MySqlUser`.chomp!() 0068 pass = `dcop amarok script readConfig MySqlPassword2`.chomp!() 0069 host = `dcop amarok script readConfig MySqlHost`.chomp!() 0070 port = `dcop amarok script readConfig MySqlPort`.chomp!() 0071 system("mysqldump", "-u", user, "-p"+pass, "-h", host, "-P", port, db, "-r", dest); 0072 0073 when "2" # postgres 0074 filename = "amarokdb.psql" 0075 filename = getFilename( filename ) 0076 dest = destination + "/" + filename 0077 puts dest 0078 db = `dcop amarok script readConfig PostgresqlDbName`.chomp!() 0079 user = `dcop amarok script readConfig PostgresqlUser`.chomp!() 0080 pass = `dcop amarok script readConfig PostgresqlPassword`.chomp!() 0081 host = `dcop amarok script readConfig PostgresqlHost`.chomp!() 0082 port = `dcop amarok script readConfig PostgresqlPort`.chomp!() 0083 system("pg_dump", "-U", user, "-W", pass, "-h", host, "-p", port, db, "-f", dest); 0084 end 0085 0086 system("dcop", "amarok", "playlist", "popupMessage", "Database backup saved to: #{destination}/#{filename}")