Решение оказалось банальным: проставить права на запуск скрипта, прописать полные пути на все (в том числе на библиотеку работы с google drive).
Скрипт:
#!/home/user/.rvm/gems/ruby-2.2.5/wrappers/ruby
def db_backup
puts "Backing up DB..."
time = Time.new
date = time.strftime("%d.%m.%y_%H.%M.%S")
# формируем бэкап
%x[pg_dump dbname > ~/backups/db.sql]
# сжимаем
%x[tar czPf ~/backups/db_#{date}.tar.gz ~/backups/db.sql]
# удаляем дамп
%x[rm ~/backups/db.sql]
# загружаем сжатый бэкап на google drive (FOLDER_ID - идентификатор папки на google drive)
%x[/usr/sbin/drive upload --file ~/backups/db_#{date}.tar.gz -p FOLDER_ID]
# удаляем сжатый бэкап с сервера
%x[rm ~/backups/db_#{date}.tar.gz]
puts "File was uploaded"
end
if __FILE__ == $0
db_backup
end
Крон:
0 4 * * * /home/user/.rvm/gems/ruby-2.2.5/wrappers/ruby /home/user/myapp/db_backup.rb