Sorry but i will not provide a script when you have not provided any try you made, the goal is not to work for you, but to help you find a solution.
So i'll just point some option of logrotate that may help you find a solution.
man logrotate
.....
compress
Old versions of log files are compressed with gzip(1) by
default. See also nocompress.
....
olddir directory
Logs are moved into directory for rotation. The directory must
be on the same physical device as the log file being rotated,
and is assumed to be relative to the directory holding the log
file unless an absolute path name is specified. When this option
is used all old versions of the log end up in directory. This
option may be overridden by the noolddir option.
....
firstaction/endscript
The lines between firstaction and endscript (both of which must
appear on lines by themselves) are executed once before all log
files that match the wildcarded pattern are rotated, before pre�
rotate script is run and only if at least one log will actually
be rotated. These directives may only appear inside a log file
definition. If the script exits with error, no further process�
ing is done. See also lastaction.
....
monthly
Log files are rotated the first time logrotate is run in a month
(this is normally on the first day of the month).
.....
If the destination directory is not on the same device as the source directory of the logs i'm sure you can find a way to do that with the postrotate/endscript option.